LDAP設定まとめ

設定の流れはこちら。https://help.ubuntu.com/community/OpenLDAPServer

インストール

LDAPサーバ

slapdのインストールの前に、/etc/hostsの

127.0.1.1 hostname.local.domain hostname 

部分を、dc=local,dc=domainと対応するように書きかえて再起動。これはインストールが終わったあとに元に戻してもよい。 rootDNがインストール時に自動的に作成される。rootDNはslapcatで確認できる。

sudo apt-get install slapd ldap-utils

LDAPクライアント

sudo apt install -y libnss-ldapd ldap-auth-config auth-client-config
sudo auth-client-config -t nss -p lac_ldap
sudo pam-auth-update

設定を聞かれるので、適当に答える。 例えば

ldap://192.168.1.1/
dc=local,dc=domain
1
yes
no
cn=admin,dc=local,dc=domain
ldappassword

設定に失敗した場合は、

sudo dpkg-reconfigure ldap-auth-config 

とすればやり直すことができる。そして、

sudo auth-client-config -t nss -p lac_ldap

と、ただコマンドをうつ(おまじない)。次に、

sudo pam-auth-update 

でデフォルトのまま(全部選ぶ)OKする。動作確認は

% ldapsearch -x -LLL -b dc=local,dc=domain -h 192.168.1.1

Ubuntu 18.04ではlibnss-ldapが原因でログインが進まなかった。この場合代わりにlabnss-ldapdを使う。 https://askubuntu.com/questions/797896/16-04-server-enabling-ldap-authentication-causes-systemd-logind-to-fail

認証がうまくいかないとき

LDAPアカウントとローカルマシンのUNIXアカウントなど、アカウントが衝突するときは、/etc/nsswitch.confにしたがって、優先順位が決まる。前に書いてある方が優先される。次の例の場合は、LDAP > ロカールファイル。

# pre_auth-client-config # passwd:         compat systemd ldap
passwd: ldap files
# pre_auth-client-config # group:          compat systemd ldap
group: ldap files
# pre_auth-client-config # shadow:         compat ldap
shadow: ldap files

これでもうまくいかない時は、uderdelでUNIXアカウントを消す。

passwdコマンドでのpasswordの変更

passwdコマンドを使うには、/etc/pam.d/common-passwordの編集が必要。 use_authtokを消すと良い。

設定など

状況確認。

% ldapsearch -x -LLL -H ldap:/// -b dc=local,dc=domain dn
dn: dc=local,dc=domain
dn: cn=admin,dc=local,dc=domain

ユーザとグループを管理するためのpeopleとgroupsノードを作る。

dn: ou=people,dc=local,dc=domain
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=local,dc=domain
objectClass: organizationalUnit
ou: groups

ldapsearch

ldapsearch -x -D "cn=admin,dc=local,dc=domain" -b "dc=local,dc=domain" "*" -w "<ldappassword>"