LDAPでユーザ認証

ログインにLDAPユーザ認証を使用するように設定します。

■ 設定

設定ファイル:/etc/nsswitch.conf


# 以下のように編集します。
passwd: files ldap
shadow: files ldap
group: files ldap

設定ファイル:/etc/ldap.conf

〜pam_filter objectClass=posixAccount
pam_login_attribute uid
pam_password exop
nss_base_passwd ou=People,dc=example,dc=com?one
nss_base_shadow ou=People,dc=example,dc=com?one
nss_base_group ou=Group,dc=example,dc=com?one
※ ?oneは検索スコープで、指定エントリ以下を検索対象とします。

設定ファイル:/etc/pam.d/system-auth

auth        required      pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
# ↓追加
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
# ↓追加
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so

password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
# ↓追加
password sufficient pam_ldap.so use_authtok
password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
# ↓追加
session required pam_mkhomedir.so skel=/etc/ske1 umask=0022
# ↓追加
session optional pam_ldap.so

LDAPユーザ認証の確認
上記の設定で、LDAPユーザ認証が出来ているはずです。

システムに存在しないユーザをLDIFファイルで作成して確認してみましょう。

適当なディレクトリに以下のファイルを作成します。
ファイル:testuser.ldif

dn: uid=testuser,ou=People,dc=exsample,dc=com
uid: testuser
cn: testuser
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {SSHA}l9tfNhzNmBKX/WYiwu5e/qiAYCpeniEx
shadowLastChange: 14348
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/testuser
※ userPassword:はslappasswdコマンドを使用してハッシュ化したパスワードを記述しましょう。

ファイル:testgroup.ldif

dn: cn=testuser,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: testuser
userPassword: {MD5}x
gidNumber: 501

LDAPに追加します。

testuserの追加
[root@example ~]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f testuser.ldif

testgroupの追加
[root@example ~]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f testgroup.ldif

passwdエントリを表示してみます。

[root@example ~]# getent passwd

CentOSにログインしてみましょう。
ログインできれば成功です。