CentOS 5.8のLinuxユーザ・グループをLDAPで一元管理
目次
構成
サーバ構成
OSバージョン
CentOS release 5.8 x86_64
パッケージ一覧
libtool-ltdl-1.5.22-7.el5_4.x86_64.rpm ・・・openldap-serversが依存
openldap-servers-2.3.43-25.el5.x86_64.rpm ・・・OpenLDAPサーバ本体
openldap-clients-2.3.43-25.el5.x86_64.rpm ・・・ldapsearch等のコマンドを提供
クライアント構成
OSバージョン
CentOS release 5.8 x86_64
ソフトウェア一覧
openldap-clients-2.3.43-25.el5.x86_64.rpm ・・・ldapsearch等のコマンドを提供
環境構築
インストール
OpenLDAPのCentOS 5.8へのインストールと初期設定に従ってインストールを行った状態で 以下の設定を行ってください。
設定
ユーザアカウント登録用のオブジェクト作成
まずはユーザアカウントを登録するためのオブジェクトを作成します。 アカウント登録のために作成するLDIF(LDAP Data Interchange Format)ファイルは /tmp/ldap_work ディレクトリに格納することにします。 viエディタで以下の通りファイルを新規に作成します。
# cd /tmp/ # mkdir ldap_work # cd ldap_work/ # vi base.ldif
dn: dc=ranonet,dc=net objectClass: dcObject objectClass: organization dc: ranonet o: ranonet dn: cn=Manager,dc=ranonet,dc=net objectClass: organizationalRole cn: Manager dn: ou=People,dc=ranonet,dc=net objectClass: organizationalUnit ou: People dn: ou=Group,dc=ranonet,dc=net objectClass: organizationalUnit ou: Group
作成したLDIFファイルを使用してオブジェクトを作成します。
# ldapadd -f base.ldif -x -D "cn=Manager,dc=ranonet,dc=net" -W
Enter LDAP Password: ←パスワードを入力
adding new entry "dc=ranonet,dc=net"
adding new entry "cn=Manager,dc=ranonet,dc=net"
adding new entry "ou=People,dc=ranonet,dc=net"
adding new entry "ou=Group,dc=ranonet,dc=net"
LDAP移行ツールの設定
アカウント登録のLDIFファイルはゼロから作成しても良いのですが、 移行ツールを使用することでLinuxの登録情報から生成することができます。 始めはこの方が簡単なので移行ツールを利用します。 まずは移行ツールの設定を行います。
# cd /usr/share/openldap/migration/ # vi migrate_common.ph
※以下、該当箇所のみ変更※ $DEFAULT_MAIL_DOMAIN = "padl.com"; $DEFAULT_BASE = "dc=padl,dc=com"; ↓変更 $DEFAULT_MAIL_DOMAIN = "ranonet.net"; $DEFAULT_BASE = "dc=ranonet,dc=net";
Linuxユーザ・グループの作成
LDAP移行ツールでLDIFファイルを生成するために、Linux上に移行対象となるグループとユーザを作成します。 ユーザにはパスワードも設定します。 まずはグループを作成します。作成するグループは admin と user とします。
# groupadd admin # groupadd user # tail /etc/group sshd:x:74: ecryptfs:x:101: rpcuser:x:29: nfsnobody:x:65534: xfs:x:43: haldaemon:x:68: avahi-autoipd:x:102: ldap:x:55: admin:x:500: ←追加されたことを確認 user:x:501: ←追加されたことを確認
続いてユーザを作成します。作成するユーザは user1(adminグループ所属) と user2(userグループ所属) とします。
# useradd -g admin user1 # useradd -g user user2 # tail /etc/passwd smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin avahi-autoipd:x:100:102:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false user1:x:500:500::/home/user1:/bin/bash ←追加されたことを確認 user2:x:501:501::/home/user2:/bin/bash ←追加されたことを確認
作成したユーザにパスワードを設定します。
# passwd user1 Changing password for user user1. New UNIX password: ←パスワードを入力 BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: ←パスワードを再入力 passwd: all authentication tokens updated successfully. # passwd user2 Changing password for user user2. New UNIX password: ←パスワードを入力 BAD PASSWORD: it is WAY too short Retype new UNIX password: ←パスワードを再入力 passwd: all authentication tokens updated successfully.
アカウント登録用LDIFファイルの作成
追加したユーザとグループの設定ファイルから必要な行だけを切り出します。 これをLDAP移行ツールに入力してLDIFファイルを生成します。
# cd /tmp/ldap_work/ # vi group
admin:x:500: user:x:501:
# vi passwd
user1:x:500:500::/home/user1:/bin/bash user2:x:501:501::/home/user2:/bin/bash
上記で作成したユーザとグループの定義ファイルをLDAP移行ツールに入力し、LDIFファイルを生成します。
# /usr/share/openldap/migration/migrate_group.pl group > group.ldif # /usr/share/openldap/migration/migrate_passwd.pl passwd > passwd.ldif
生成されたLDIFファイルの中身は以下の通りです。 移行ツールを使わずに、始めからこのファイルを作成しても良いです。
dn: cn=admin,ou=Group,dc=ranonet,dc=net objectClass: posixGroup objectClass: top cn: admin userPassword: {crypt}x gidNumber: 500 dn: cn=user,ou=Group,dc=ranonet,dc=net objectClass: posixGroup objectClass: top cn: user userPassword: {crypt}x gidNumber: 501
dn: uid=user1,ou=People,dc=ranonet,dc=net uid: user1 cn: user1 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$1$XOLX4gC/$DhexWfiWqCehaZjYIErKH. shadowLastChange: 15453 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 500 gidNumber: 500 homeDirectory: /home/user1 dn: uid=user2,ou=People,dc=ranonet,dc=net uid: user2 cn: user2 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$1$TDVGIGO1$MxYs12.XodOPQ7o.B1Syt0 shadowLastChange: 15453 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 501 gidNumber: 501 homeDirectory: /home/user2
Linuxユーザ・グループの削除
必要なLDIFファイルが作成できたので、グループとユーザは削除します。
# userdel -r user1 # userdel -r user2 # groupdel admin # groupdel user
アカウントをLDAPへ登録
生成したLDIFファイルを利用してLDAPにLinuxアカウントを登録します。
# ldapadd -f passwd.ldif -x -D "cn=Manager,dc=ranonet,dc=net" -W Enter LDAP Password: ←パスワードを入力 adding new entry "uid=user1,ou=People,dc=ranonet,dc=net" adding new entry "uid=user2,ou=People,dc=ranonet,dc=net" # ldapadd -f group.ldif -x -D "cn=Manager,dc=ranonet,dc=net" -W Enter LDAP Password: ←パスワードを入力 adding new entry "cn=admin,ou=Group,dc=ranonet,dc=net" adding new entry "cn=user,ou=Group,dc=ranonet,dc=net"
設定ファイル
/etc/group
/etc/gshadow
/etc/ldap.conf
/etc/nsswitch.conf
/etc/passwd
/etc/shadow
/tmp/ldap_work/base.ldif
/tmp/ldap_work/group
/tmp/ldap_work/group.ldif
/tmp/ldap_work/passwd
/tmp/ldap_work/passwd.ldif
クライアント設定
インストール
LDAPを操作(検索、追加、削除など)するためのコマンドラインユーティリティ
(クライアント)のパッケージ1つをインストールします。
DVDドライブにCentOS 5のDVD-ROMをセットし、以下のコマンドを実行します。
# mount /dev/cdrom /media/cdrom # cd /media/cdrom/CentOS/ # rpm -ihv openldap-clients-2.3.43-25.el5.x86_64.rpm Preparing... ########################################### [100%] 1:openldap-clients ########################################### [100%] # cd / # umount /media/cdrom
設定
LDAPクライアントの設定
ログインする際にLinuxユーザとグループに関する情報は /etc/passwd と /etc/group だけでなく LDAPサーバへも問い合わせるように変更します。 ローカルのpasswdファイルとgroupファイルを優先し、そこに記述されていない情報をLDAPサーバに 確認するようにします。設定には認証設定ツールが提供されているので、これを利用することで LDAPやNSSなど必要な設定を一通り書き換えてくれます。
# authconfig-tui
lqqqqqqqqqqqqqqqqu Authentication Configuration tqqqqqqqqqqqqqqqqqk x x x User Information Authentication x x [ ] Cache Information [*] Use MD5 Passwords x x [ ] Use Hesiod [*] Use Shadow Passwords x x [*] Use LDAP [*] Use LDAP Authentication x x [ ] Use NIS [ ] Use Kerberos x x [ ] Use Winbind [ ] Use SMB Authentication x x [ ] Use Winbind Authentication x x [ ] Local authorization is sufficient x x x x lqqqqqqqqk lqqqqqqk x x x Cancel x x Next x x x mqqqqqqqqj mqqqqqqj x x x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
lqqqqqqqqqqqqqqqqqu LDAP Settings tqqqqqqqqqqqqqqqqqk x x x [ ] Use TLS x x Server: ldap://192.168.0.10/____________________ x x Base DN: dc=ranonet,dc=net_______________________ x x x x lqqqqqqk lqqqqk x x x Back x x Ok x x x mqqqqqqj mqqqqj x x x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
ユーザのホームディレクトリの作成
LDAPに登録されている情報に基づいてLinuxへログインしようとすると、 ログイン先の/homeディレクトリに該当ユーザのホームディレクトリが 存在しないという警告が出力されてしまいます。 確かにLDAPに登録した情報にはホームディレクトリに関する情報がありますが、 LDAPを参照するクライアントPCにはホームディレクトリを作成していません。 ログイン自体はできるのですが、何かと不便ですので、ログイン時に自動で ホームディレクトリを作成するように設定します。 viエディタでPAMの設定ファイルを編集します。
# cd /etc/pam.d/ # vi system-auth-ac
※ファイルの末尾に追記※ (前略) session required pam_unix.so session optional pam_ldap.so session optional pam_mkhomedir.so skel=/etc/skel umask=022 ←追記
動作テスト
『クライアント設定』で設定したLinuxに対してTera Termでログインします。 その際にLDAPサーバに登録した user1 もしくは user2 を指定してログインします。 ログインできれば成功です。