LDAPのデータベースに、先ほどLinuxアカウントのデータをインポートしてやりました。こいつを用いてLinuxで認証を行います。 以下の設定を、全てのLinuxクライアントで実行しておくと、全マシンのユーザアカウント管理が一括でできるようになりますね。 また、passwdコマンドで、LDAPのパスワード(userPasswd)が変更されるようになります。
/etc/openldap配下にも同じ名称のものがありますが、/etc配下のは、nss_ldap用の設定ファイルです。つまり、Linuxの認証基盤がLDAPサーバを参照する際の設定です。誤解なきように~…
host foo.example.com uri ldap://foo.example.com base dc=example,dc=com ldap_version 3 ssl start_tls binddn cn=syncuser,dc=example,dc=com bindpw secret scope sub bind_policy soft pam_password exop pam_filter objectclass=posixAccount pam_login_attribute uid pam_member_attribute memberUid pam_check_host_attr yes nss_base_passwd ou=People,dc=example,dc=com nss_base_shadow ou=People,dc=example,dc=com nss_base_group ou=Group,dc=example,dc=com
ファイル内にコメントがありますので、大体はわかると思いますが~、この程度を設定しておけばOK。ssl start_tlsを指定すると、暗号化してトランスポートレイヤが作成されます。uriにldaps://指定してもOK。
認証用に使用する場合は、以下の部分を変更するだけで十分。
passwd: files ldap shadow: files ldap group: files ldap
passwdファイル、shadowファイル、groupファイルは、/etcにあるそれぞれのファイルを参照後、見つからない場合はldapを見に行く、という設定。nsswitch.conf見ると、他のファイルの設定もいっぱいあります。これらのファイルが、それぞれ参照設定が可能ってことね。hostsとかnetworkとかも、LDAPにいれておけば参照可能になったりします。う~ん、あまりメリットないけど…hostsぐらいですかねぇ?いれておくとメリットあるのって。 で、うまくLDAPから引けているかどうかを以下のコマンドで確認してみてください。
# getent passwd # getent shadow # getent group
これで、LDAPに登録されているユーザやグループが表示されればOK。また、passwdファイルにもLDAPにも同じユーザが登録されている場合は、2つエントリが表示されるとOKになります(passwdファイルのエントリと、LDAP側のエントリの2個)
この設定によって、本格的にLinuxの認証基盤がLDAPを参照しに行きます。ログインできなくなったりするので、rootアカウントのコンソールを一つ残しておいて、うまくユーザ認証が通るようになるまで残しておくのが吉。
さて、/etc/pam.d/system-authを以下の用に変更します。もしも駄目だった時用に、元々のsystem-authファイルはバックアップしておいたほうが吉です。
auth required pam_env.so auth sufficient pam_unix.so try_first_pass likeauth nullok auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account sufficient pam_ldap.so account required pam_unix.so password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 password sufficient pam_unix.so try_first_pass use_authtok nullok sha512 shadow password sufficient pam_ldap.so use_authtok use_first_pass password required pam_deny.so session required pam_limits.so session required pam_env.so session required pam_unix.so session optional pam_ldap.so
さて、どうでしょう。ログインできるようになりましたか~ね?もしもうまく行かない場合は以下を疑ってみると良い…
先程のsystem-authに、以下のような設定を追加すると、初回ログイン時にホームディレクトリがない場合、自動作成してくれたりします。
session required pam_mkhomedir.so skel=/etc/skel umask=0022
ホームディレクトリの大元を持っているサーバなどで追加しておくと便利かもね!
(This host) = https://femt.ddo.jp