いいかげんLDAP管理メモ
クリスマスイブと言えばシステム管理ということで、また必要に迫られてド素人オールドタイプの私がLDAPの俄か勉強をしているので、いいかげん(「良い加減」ではない)にメモします。必要があれば自由に追記する予定。嘘や間違いがあったら教えてください(←これが本当の目的)。
- LDAPって何? ⇒ ユーザIDやパスワードの管理に使う、クライアント・サーバ型データベース。NISのかわり。「パスワード以外にも使える」とか「LDAPのPはプロトコル」とか「ディレクトリ(笑)はデータベースじゃない」とか細かいことは無視。
- LDAPサーバの立ち上げ:/etc/openldap/slapd.confを設定してから、/etc/init.d/ldap startおよびchkconfig ldap on(Red Hat Enterprise Linux ES 4の場合。他は知らない)。
- suffix "dc=my-domain,dc=com"を、たとえば組織のドメインがmy.domain.example.comだったら、suffix "dc=my,dc=domain,dc=example,dc=com"に。
- rootdn "cn=Manager,dc=my-domain,dc=com"のdcも同様。
- コメントを参考にrootpwを設定。chmod o= /etc/openldap/slapd.confしておくこと。ただしslapdをroot以外(ユーザ「ladp」など)で実行するときは、chgrp ldap /etc/openldap/slapd.conf等も忘れずに。
- いずれsambaのパスワードもLDAPにするときは、/usr/share/doc/samba-*/LDAP/samba.schemaを/etc/openldap/schema/samba.schemaにコピーしておき、include /etc/openldap/schema/samba.schemaを追加。
- アクセス権限を設定。「ふつう」は以下を追加すればOK。"by self write"(自分の「名前」が「鍵」であるようなエントリは変更可能)と"by * selfwrite"(自分の名前が値であるようなエントリは追加・削除可能)はまったく別物なので注意。前者は自分の情報を変更するとき、後者は自分でグループへ加入するときなどに利用する(らしい)。
access to attr=userPassword by self write by anonymous auth by * none access to * by self write by * read
ssl no tls_cacertdir /etc/openldap/cacerts pam_password md5
-
- /etc/openldap/ldap.conf(LDAP関係のコマンドが参照する設定ファイル?)のHOSTとBASEを設定。
- /etc/nsswitch.confで↓みたくする。[!NOTFOUND=return]は、/etc/passwdなどにあるエントリはLDAPを検索しないという意味(/etc/groupのグループとLDAPのグループの両方に所属するユーザがいる場合などは駄目)。これがないと、LDAPサーバがダウンしているときにシステムアカウントまでタイムアウトして悲惨な状態になる(/etc/ldap.confにnss_initgroups_ignoreusers root,ldap,...などと列挙しても同様だが、列挙が面倒。あと、nscdは除外しないと駄目?)。特に、LDAPサーバ自身が自分のLDAPクライアントでもある場合、起動に異常に時間がかかってしまう。
passwd: files [!NOTFOUND=return] ldap shadow: files [!NOTFOUND=return] ldap group: files [!NOTFOUND=return] ldap
-
-
- 疑問5: 手元の設定ではprotocolsとservicesとnetgroupとautomountもfiles ldapになっているが何故?(ldapsearchしてもそれらしいエントリは皆無) ⇒ とりあえず消しても動いた
- そのままだと遅いので、キャッシュデーモンも動かしたければ、クライアント側で/etc/init.d/nscd startおよびchkconfig --level 345 nscd on。ただしRHEL4のnss_ldapとnscdはバージョンが古くてバグが多いので(アップデートしても)、やめたほうがよい。
- /etc/pam.d/の下はよくわからない
が、いじらなくて良い?のでGUIでやる? - /etc/sysconfig/authconfigは? USELDAPAUTH=yesにすべきだが、この変数の値は誰が参照しているのか???
- Sambaの設定。/etc/samba/smb.confの先頭に以下のように追加。下手に""とかつけたら駄目。デフォルトのpassdb backend = tbdsamはコメントアウト。smbpasswd -wでLDAPの管理パスワードをSambaに記憶させる。testparm smb.confで設定を確認してから、/etc/init.d/smb restart。
-
ldap admin dn = cn=Manager,dc=my,dc=domain,dc=example,dc=com passdb backend = ldapsam:ldap://ldapserver.my.domain.example.com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap suffix = dc=my,dc=domain,dc=example,dc=com
さらなる続きはCMの後で。第一部完。