玄箱/slapd
出典: Fukudat
LDAPサーバー slapd のインストール・設定の方法. Sambaを使って Windows ドメインコントローラ (PDC, SDC) を作る方法は 玄箱/samba を参照のこと.
目次 |
インストール
apt-get でゲット!
$ su - $ apt-get install ldap-server ldap-utils nscd
インストールが進むとドメイン名を聞かれるので,適当に答える.ここでは
fukudat.com
とした.これにより "dc=fukudat,dc=com" と設定したことになる.
それから管理者(admin)のパスワードを聞かれるので,適当に答える.root と同じでいいんじゃないだろうか.
コマンドプロンプトに戻ってきたら,その時点で設定ファイル (/etc/ldap/slapd.conf など)は出来上がっている上に,slapd デーモンは動いている.
ldapsearch コマンドで,データベースの中身を確認してみよう.まだSASLの設定が済んでいないので,simple authentication での接続となる.
$ ldapsearch -x # extended LDIF # # LDAPv3 # base <> with scope sub # filter: (objectclass=*) # requesting: ALL # # fukudat.com dn: dc=fukudat,dc=com objectClass: top objectClass: dcObject objectClass: organization o: fukudat.com dc: fukudat # admin, fukudat.com dn: cn=admin,dc=fukudat,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
SASL 対応
apt-get でゲット!
$ apt-get install sasl2-bin libsasl2-modules
/etc/default/saslauthd を編集して以下を追加
START=yes MECHANISMS="pam"
そしたら,次のコマンドで saslauthd を起動
$ /etc/init.d/saslauthd start
次に,/etc/ldap/slapd.conf を編集して,以下の行を追加.
# sasl
sasl-realm fukudat.com
sasl-host nas01.fukudat.com
sasl-regexp uid=admin,cn=fukudat.com,cn=.+ \
cn=admin,dc=fukudat,dc=com
sasl-regexp uid=(.*),cn=fukudat.com,cn=.+ \
uid=$1,ou=People,dc=fukudat,dc=com
sasl-secprops none
#password-hash {CLEARTEXT}
#password-hash {SHA}
password-hash {MD5}
saslpasswd2 コマンドで admin のパスワードを作成.
$ saslpasswd2 -c admin Passwd: xxxx Again (for verification): xxxx
うまく動いているかどうか確認.
$ ldapsearch -U admin "(cn=admin)"
データベースの作成
http://www.padl.com/OSS/MigrationTools.html から MigrationTools をゲット! /tmp にでも展開する.
$ cd /tmp $ tar xvfz MigrationTools.tgz MigrationTools-47/ MigrationTools-47/ads/ MigrationTools-47/ads/migrate_passwd_ads.pl MigrationTools-47/ads/migrate_all_online_ads.sh MigrationTools-47/ads/migrate_group_ads.pl MigrationTools-47/ads/migrate_all_nis_online_ads.sh MigrationTools-47/ads/migrate_base.pl MigrationTools-47/ads/migrate_common.ph MigrationTools-47/MigrationTools.spec MigrationTools-47/migrate_netgroup_byhost.pl MigrationTools-47/migrate_all_nis_offline.sh MigrationTools-47/Make.rules MigrationTools-47/migrate_aliases.pl MigrationTools-47/README MigrationTools-47/migrate_rpc.pl ... MigrationTools-47/migrate_all_netinfo_offline.sh
migrate_common.ph を編集して $DEFAULT_BASE, $DEFAULT_MAIL_DOMAIN を変更する.
$ cd MigrationTools-47 $ vi migrate_common.ph ... $DEFAULT_MAIL_DOMAIN = "fukudat.com"; ... $DEFAULT_BASE = "dc=fukudat,dc=com";
/etc/passwd, /etc/group, /etc/hosts を ldif に変換!
./migrate_passwd.pl /etc/passwd passwd.ldif ./migrate_group.pl /etc/group group.ldif ./migrate_hosts.pl /etc/hosts hosts.ldif
passwd.ldif, group.ldif, hosts.ldif ができる. これらのファイルを編集して,LDAP で管理したいエントリーだけを残す. root などのシステムユーザは削除しちゃえばいいんじゃないでしょうか.
最後に,出来上がった ldif ファイルをLDAPに登録する.
$ ldapadd -U admin -f passwd.ldif $ ldapadd -U admin -f group.ldif $ ldapadd -U admin -f hosts.ldif
PAM の LDAP化
apt-get でゲット!
apt-get install libpam-ldap libpam-cracklib libpam-pwdfile libnss-ldap
/etc/pam_ldap.conf を編集して,以下のようにする.
host 127.0.0.1 # LDAP server のアドレスを記述する base dc=fukudat,dc=com # 環境に合わせて変更する SASL_SECPROPS none SASL_REALM fukudat.com
/etc/pam.d をたくさん変更する.壊れても元に戻せるように,バックアップを取り,symbolic link を張ることにする.
$ cd /etc $ mv pam.d pam.d.orig # オリジナルは pam.d.orig として取っておく $ cp -a pam.d.orig pam.d.ldap # pam.d.ldap にコピーする $ ln -s pam.d.ldap pam.d # pam.d.ldap を pam.d に symbolic link する $ cp -p /usr/share/doc/libpam-ldap/examples/pam.d/* pam.d # サンプルからコピー
サンプルには pam_pwdb.so がたくさん使われているが Debian にはない.pam_unix.so と同じと思われるので,エラーメッセージを防ぐために,以下のようにして修正する.
$ cd /etc/pam.d $ for i in *; do > echo $i > ed -s $i <<'EOF' > 1,$s/pwdb/unix/g > w > EOF > done
/etc/libnss-ldap.conf を編集.
host 127.0.0.1 base dc=fukudat,dc=com
/etc/nsswitch.conf を編集
passwd: files ldap group: files ldap shadow: files ...
とする.
最後に /etc/passwd, /etc/group, /etc/shadow を編集.LDAPで管理するユーザを削除する.
どうやら,一度リブートしておいたほうがよさそう.
$ reboot
