Ubuntu Server/ldap-auth-client

出典: Fukudat.com

既存の玄箱に設定されているLDAP Serverを認証サーバーに使いたい. そこで,ここを参考に以下のように設定.

目次

1 Install

  • ldap clientのパッケージをインストール
$ sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db
  • post-installのconfigurationで次のように答える.
    • Should debconf manage LDAP configuration = yes
    • LDAP server URI = ldap://nas01.fukudat.com/ (最後のslashも必要みたい)
    • Distinghished name of the search base = dc=fukudat,dc=com
    • LDAP version to use = 3
    • Make local root Database admin = yes
    • Does the LDAP database require login = no
    • LDAP account for root = cn=admin,dc=fukudat,dc=com
    • LDAP root account password = /see Notes DB/
    • Local crypt to use when changing passwords = exop

2 Configure

2.1 基本設定

$ sudo dpkg-reconfigure ldap-auth-config
  • /etc/nsswitch.conf を編集して以下のようにする.
passwd:         files ldap
group:          files ldap
  • ここまでうまくいっていれば,次のコマンドでLDAPのユーザとグループがリストできるはず.だめなら上をやり直し.
$ getent passwd
$ getent group
  • /etc/pam.d/common-account を編集して以下のようにする.
account sufficient      pam_ldap.so
account required        pam_unix.so
  • /etc/pam.d/common-passwd を編集して以下のようにする.
password        sufficient      pam_ldap.so
password        required        pam_unix.so nullok obscure min=4 max=8 md5

以上.これで LDAP のユーザでログインできるはず.

2.2 local user の削除

UbuntuのlocalユーザのUIDが1000から始まっており,LDAPのユーザのUIDとぶつかっていることが判明 (Fedoraでは500から始まっており問題なかった).

仕方がないので,以下のようにする.

  • Ubuntuのlocalユーザは削除する.("takeshi" はUbuntuのインストールの際に指定したローカルユーザ)
$ sudo userdel takeshi
  • すると,group "takeshi" が既存ユーザの primary group だから削除できないというエラーになる.これはLDAPユーザとぶつかっているからで,仕方がないので,手動で /etc/group を編集して削除する.
  • 以上だが,このままだと network の障害や,LDAP server がダウンしたときUbuntuに全くログインできなくなってしまう.バックアップとして,システムユーザを追加するか,既存のシステムユーザをログイン可能にする.そのユーザは(緊急時に備えて)sudo可能にしておくべきだろう.
    • 今回は既存の "backup" ユーザにパスワードを付与.さらに "admin" グループに追加して sudo 可能にした.

3 リンク集