CentOS 5.2 にLDAP経由でログイン

LDAPデータをPOSIXユーザーとして使う、つまり、LDAPのデータでLinuxがログインできるようにしてみよう。これによってNISサーバーのようにユーザー管理が一元化できるし、NFSで共有したときのユーザーIDに悩むこともなくなる。このエントリーではすでにあるOpenLDAPサーバーを使用して CentOS 5.2 をLDAPクライアントにする。まだLDAPサーバーがない場合は OpenLDAPサーバー構築 を参照してほしい。

まずはユーザー情報をLDAPサーバーに登録しよう。LDIFの書き方はいろいろあるが、シンプルにやるなら以下のような感じだ。一点注意するとしたら、posixAccountは補助スキーマなのでaccountやinetOrgPersonなどが必要になることだ。userPasswordは事前にslappasswdで作成しておこう。

# slappasswd
New password:
Re-enter new password: 
{SSHA}HqRcWT1SlBrX1aCPhmM9/URequ50vbsD
dn: cn=gadget,ou=Groups,dc=rewse,dc=jp
objectClass: posixGroup
cn: gadget
gidNumber: 1000
 
dn: cn=svn,ou=Groups,dc=rewse,dc=jp
objectClass: posixGroup
cn: svn
gidNumber: 5000
memberUid: gadget
 
dn: uid=gadget,ou=People,dc=rewse,dc=jp
objectClass: account
objectClass: posixAccount
uid: gadget
cn: gadget
userPassword: {SSHA}HqRcWT1SlBrX1aCPhmM9/URequ50vbsD
uidNumber: 1000
gidNumber: 1000
gecos: Firstname Lastname
homeDirectory: /home/gadget
loginShell: /bin/bash

できたLDIFをLDAPサーバーに読み込ませればサーバー側は完了だ。

# ldapadd -cxW -D "cn=Manager,dc=rewse,dc=jp" -f /var/lib/ldap/ldif/nis.ldif
Enter LDAP Password:
adding new entry "cn=gadget,ou=Groups,dc=rewse,dc=jp"
 
adding new entry "cn=svn,ou=Groups,dc=rewse,dc=jp"
 
adding new entry "uid=gadget,ou=People,dc=rewse,dc=jp"

それではクライアント側(ログインするマシン側)の設定を行う。NSS用のLDAPモジュール、設定ツール、それと毎回LDAPサーバーにアクセスせずにローカルでキャッシュするためのネーム・サービス・キャッシング・デーモンをインストールしよう。

# yum install nss_ldap authconfig nscd

authconfigを使用してLDAPデータでログインできるように設定ファイルを書き換える。また、authconfigでは設定できないが、デフォルトではもしLDAPサーバーに接続できなかった場合に延々とリトライしてしまうで、すぐにエラーになるように変更した。

# authconfig \
  --enableldap \
  --enableldapauth \
  --ldapserver=ldap.rewse.jp \
  --ldapbasedn="dc=rewse,dc=jp" \
  --update
# echo "bind_policy soft" >> /etc/ldap.conf

これでLDAPサーバーの情報を参照できるようになっているはずなので、/etc/passwd にないユーザー情報が見えることを確認してみよう。

# grep gadget /etc/passwd
# getent passwd gadget
gadget:x:1000:1000:Firstname Lastname:/home/gadget:/bin/bash
# id gadget
uid=1000(gadget) gid=1000(gadget) 所属グループ=5000(svn),1000(gadget)

このままでもログイン可能だけど、たとえばlsしたときの所有者や所有グループの名前解決のたびにLDAPサーバーにアクセスしてしまうので、キャッシュしてくれるnscdを起動しておく。

# service nscd start
# chkconfig nscd on

また、ホーム・ディレクトリがないときは自動で作成するように、PAMの設定に以下を追加する。

# echo "session     optional      pam_mkhomedir.so skel=/etc/skel umask=077" >> /etc/pam.d/system-auth

CentOS 5.2 にLDAP経由でログイン への1件のコメント

  1. [...] ボクの環境にはLDAPサーバーがあり、OSユーザーはローカル管理せずにこのLDAPサーバーを使うようにしているので、この連携を行う。連携方法については 複眼中心: LDAPとOSユーザーを連携 を参照してほしい。 [...]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

トラックバックをどうぞ

言及リンクがないと(あなたのページにこのページへのリンクがないと)トラックバックできません。