筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2009-02-26 LDAPによる認証統合
■ FreeBSD 7.1-RELEASE で LDAPユーザ認証時に passwd でパスワードを変更する方法
nss_ldap や pam_ldap を導入し、LDAP 上の POSIX アカウントでログインできるように設定済の環境が前提です。
その辺りの設定は以下のページを参考に。
- http://moimoitei.blogspot.com/2007/11/opendirectory-freebsd-netbsd-auth.html
- http://cocelo.s201.xrea.com/freebsd/index.php?FreeBSD%2FPorts%2FOpenLDAP%2FLDAP%20Authentication
passwd コマンドが PAM 経由で LDAP を参照するように設定。
$ grep -v -e ^$ -e ^# /etc/pam.d/passwd password sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass password required pam_unix.so no_warn try_first_pass
RHEL 系 Linux では、authconfig と pam の設定を済ませていれば、passwd コマンドでユーザが自らのパスワードを変更できますが、FreeBSD の場合は passwd コマンドのソースコードを改変する必要があります。
--- passwd.c 2008-11-25 11:59:29.000000000 +0900 +++ passwd_pam_ldap.c 2009-02-26 19:18:51.000000000 +0900 @@ -121,8 +121,8 @@ break; default: /* XXX: Green men ought to be supported via PAM. */ - errx(1, - "Sorry, `passwd' can only change passwords for local or NIS users."); + fprintf(stderr, "Changing LDAP password for %s\n", + pwd->pw_name); } #define pam_check(func) do { \
上のパッチを /tmp/passwd_pam_ldap.patch という名前で適当に保存し、パッチを当てます。
# cd /usr/src/usr.bin/passwd # patch -p0 < /tmp/passwd_pam_ldap.patch
また、せっかくパッチを当てたファイルが csup 等で書き換えられないように、.cvsignore ファイルを書いておきます。
# echo "*" > /usr/src/usr.bin/passwd/.cvsignore
パッチを当てたら、
# make && make install
でインストール。
最後に、LDAP 上の POSIX アカウントでログインして、自分のパスワードを変更できる事を確かめます。
$ passwd Changing LDAP password for meta Enter login(LDAP) password: New password: Re-enter new password: LDAP password information changed for meta
以上で passwd コマンドで LDAP 上のアカウントのパスワードを変更出来るようになりましたが、 root 権限でも passwd コマンドでは自分以外のパスワードを変更する事はできないので注意が必要です。
管理者がユーザのパスワードを再設定するには ldappasswd を使います。