# apt-get install libnss-ldap LDAP server host address: 127.0.0.1 distinguished name of the search base: dc=hoehoe,dc=japan LDAP version to use: 3 database requires login: No make configuration readable/writeable by owner only: No nsswitch.conf is not managed automatically.上記の設定項目は/etc/libnss-ldap.confファイルに書かれます。 基本的にはlibnss-ldapはクライアントなので/etc/ldap/ldap.confの設定項目と 同じように設定します。
/etc/nsswitch.confを編集してlibnss-ldapを使うようにします。
# vi /etc/nsswitch.conf # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files ...
# vi moke.ldif dn: cn=moke,ou=People,dc=hoehoe,dc=japan objectClass: posixAccount objectClass: posixGroup cn: moke uid: moke userPassword: abcdef uidNumber: 1111 gidNumber: 1111 loginShell: /bin/bash homeDirectory: /home/moke gecos: Sample Userここで1つのdnでpasswdのエントリとgroupのエントリを兼ねさせています。 libnss-ldapがエントリを/etc/passwdとして使う時にはuidをユーザ名、uidNumberをユーザ番号として用い、 /etc/groupとして使う時にはcnをグループ名、gidNumberをグループ番号として用いるので、 このような共有エントリを1つでdebian流の「新ユーザ毎に新グループ名」に対応できます。 なお、dnの項目は一意になればいいので、
追加するにはldapaddを用います。 追加する権限はcn=admin,dc=hoehoe,dc=japanにしかないのでこれを指定します。
# ldapadd -x -W -D "cn=admin,dc=hoehoe,dc=japan" < moke.ldif Enter LDAP Password: 12345678 adding new entry "cn=moke,ou=People,dc=hoehoe,dc=japan"slapcatやldapsearchで追加されたか確認してみましょう。
追加されていたらユーザmokeが利用できると思います。
# cd /home # mkdir moke # chown moke moke …ユーザ名の解決 # chgrp moke moke …グループ名の解決 # ls -ln drwxr-sr-x 2 1111 1111 4096 Jul 24 17:59 moke # ls -l drwxr-sr-x 2 moke moke 4096 Jul 24 17:59 moke …番号の解決できましたか?んじゃログイン。
login: moke Password: abcdef Login incorrectあれ?できませんね?
ログインするためにはlibpam-ldapを導入する必要があります。 実際には下に示すように、特定の条件ではlibnss-ldapだけでログインも可能なんですが、
まずCRYPTされたパスワードを用意します。これはslappasswdというユーティリティを用います。
# slappasswd -h "{CRYPT}" New password: abcdef Re-enter new password: abcdef {CRYPT}zZWMO5gSs3.G2これを先ほどのmoke.ldifファイルのuserPassword:の項目と入れ替えます。
# vi moke.ldif dn: cn=moke,ou=People,dc=hoehoe,dc=japan objectClass: posixAccount objectClass: posixGroup cn: moke uid: moke userPassword: {CRYPT}zZWMO5gSs3.G2 uidNumber: 1111 gidNumber: 1111 loginShell: /bin/bash homeDirectory: /home/moke gecos: Sample Userユーザを再作成します。ldapmodifyでもいいです。
# ldapdelete -x -W -D "cn=admin,dc=hoehoe,dc=japan" "cn=moke,ou=People,dc=hoehoe,dc=japan" Enter LDAP Password: 12345678 # ldapadd ...次に、/etc/libnss-ldap.confを編集します。 ログインを可能とするためにはuserPasswordフィールドを読めないといけませんが、 現在はanonymousの設定になっているためです。
# vi /etc/libnss-ldap.conf ... # The distinguished name to bind to the server with # if the effective user ID is root. Password is # stored in /etc/ldap.secret (mode 600) #rootbinddn cn=manager,dc=padl,dc=com rootbinddn cn=admin,dc=hoehoe,dc=japan
# touch /etc/ldap.secret # chmod 600 /etc/ldap.secret # echo 12345678 > /etc/ldap.secretこれでログインできるようになります。実験終わったら元にもどしておきましょう。