SCSI RAIDカードが壊れたサーバ の復旧で、CentOS を4.6から5.1に変更。ついでに一般ユーザー管理をLDAPに移行してしまおうと。以前からLDAPサーバは立ち上げてあったので移行はそれほど苦労しなかったのですが、ProFTPD がPAM+LDAP(pam_ldap.so)で認証してくれず、ログには no such user 'foo'と出る。
どうやらProFTPDは認証以外のユーザー名・UID・GIDといった情報を/etc/passwdから取っているらしい。今回それらの情報はLDAPに入れてあり/etc/passwdにはなかったのがエラーの原因で、/etc/passwdにも情報を入れると認証してくれる(/etc/shadowは不要)。だけどProFTPDのために/etc/passwdを復活させるのは本末転倒。
というわけで、ProFTPDをでビルド。設定は/etc/openldap/slapd.conf./configure --with-modules=mod_ldap
access to attrs=userPassword by self write by dn="cn=manager,dc=example,dc=com" write by anonymous auth by * none access to * by self write by dn="cn=manager,dc=example,dc=com" write by * read/usr/etc/proftpd.conf
AuthOrder mod_ldap.c mod_auth_unix.c LDAPServer ldap.server LDAPDoAuth on "dc=example,dc=com"などとします。ProFTPDソースのREADME.LDAPにはLDAPDNInfoの指定も書いてありますが、これではproftpd.confにLDAPのパスワード(何も考えないとmanagerの)を記述してしまうことになりますのでセキュリティ上良くない。上の設定のようにanonymousに
- userPasswordをauthorizeできる
- UID、GID、ホームのパスを読み出せる
Comments