読者です 読者をやめる 読者になる 読者になる

Ubuntu のユーザ管理を LDAP Account Manager でするようにした

Ubuntu 12.04 LTS も出たのでさくらVPSで色々とセットアップ中です。Unix のユーザ管理は、LDAPで行うようにし、かつLDIFを一から書くのは面倒なので LDAP Account Managerを使うようにしました。その時のメモです。

諸々のパッケージをインストール
# apt-get install slapd
# apt-get install ldap-account-manager
# apt-get install libnss-ldap
# apt-get install ldap-utils

LDAP サーバとLDAP Account Managerの再セットアップ時のコマンド

上記インストール時にも同様の設定入力はあります。

# dpkg-reconfigure slapd
# dpkg-reconfigure ldap-account-manager

LDAP Account Manager

設定で指定したマスターパスワードと標準のlamプロファイル(デフォルトパスワード:lam)の状態でセットアップされます。
Apache2を使うようにインストールしていれば、http://<ホスト>/lam/ でブラウザから操作できます。
右上の「LAM configuration」から「Edit server profiles」で「ldm」プロファイル設定に入ります。
[General settings]では「Security settings」のcn=Manager〜の部分をslapdのセットアップで指定した管理ユーザにします。
[Account types]では Samba は使わないのでこれを Remove します。
その他 dc も自分のドメインに合わせてそれぞれ設定します。

トップページから管理ユーザのパスワードでログインして、Unixで使うグループとユーザーをそれぞれ追加します。
※ユーザーのパスワードはセットしてからSaveしないと保存されないので注意。
さらにバインドユーザー proxyuserを、「Tree View」から「import」で下記のLDIFを使って作成します。

dn: cn=proxyuser,dc=mydomain,dc=com
cn: proxyuser
objectclass: userPassword
userPassword: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

※パスワードは、slappasswd コマンドで生成しておきます。

バインドユーザーの設定

/etc/ldap.conf の binddn と bindpw をそれぞれ先ほど作成したバインドユーザーのものにします。また pam_password を「exop」にします。

確認

/etc/nsswitch.conf の passwd, group, shadowが「compat ldap」か確認します。

$ getent passwd <追加したユーザーのuid>
$ getent group <追加したグループのgid>

で引けるかどうか確認。

$ su <追加したユーザーのuid>
Password:

追加したユーザのパスワードが使えるか確認。

自分でパスワード変更

ログインユーザーが自身のパスワードを変更できるか確認すると、

$ passwd
Enter login(LDAP) password: 
passwd: Authentication information cannot be recovered
passwd: password unchanged

のようにエラーになってしまいました。
/etc/pam.d/common-password の use_authtok を消して slapd を再起動します。

# here are the per-package modules (the "Primary" block)
password        [success=2 default=ignore]      pam_unix.so obscure sha512
#password       [success=1 user_unknown=ignore default=die]     pam_ldap.so use_authtok try_first_pass
password        [success=1 user_unknown=ignore default=die]     pam_ldap.so try_first_pass

以上、メモ終わり。