2003/12/03 更新
samba 梱包の オリジナルの CGI スクリプト(samba-2.2.7a-ja-1.1/examples/LDAP/smbldap-tools/cgi/)は
Net::LDAP を 利用しているのに 実際のパスワード変更を
userPassword については ldappasswd を呼び出している.(そのため rootdn パスワードを スクリプトに含めなければならない)
lmPassword と ntPasswordに ついては smbpasswd をsudo を 使って呼び出している
のが ちょっとアレと思ったので samba-2.2.7a-ja-1.1/examples/LDAP/smbldap-tools/cgi/ladppasswd.cgi ほとんど そのまんまなのだけれども Net::LDAP::modifyを 使ってみましたってところです。
http://prdownloads.sourceforge.net/perl-ldap/ より
2003/10/01追加
http://search.cpan.org/~bjkuit/Crypt-SmbHash-0.02/ より
# もちろん smbldap-* コマンド (samba-2.2.7a-ja-1.1/examples/LDAP/smbldap-tools/) は # 動作しているという前堤です
注意
パスワードの変更を自分の権限で行うために属性 userPassword,lmPassword,ntPassword はユーザ自身で変更できなければなりません。
(slapd.conf の アクセス制限で by self write )
また mPassword、ntPasswordを作るために mkntpwd を 呼び出しています。 HTTPサーバがmkntpwd を実行できるかにも注意 します。 (mkntpwdのPerlのモジュールがあれば教えて下さい)higa@heart-land.jpさんから Crypt-SmbHash-0.02を教えていだだきました。 ありがとうございます。
管理者は勿論 userPassword,lmPassword,ntPassword の属性を変更できなければばなりません。これは ldap の設定によります。
以下の slapd.conf(の一部) の例 では グループ(10000)に属するユーザの パスワードは hogehogeさん が hogehoge さんのパスワードを使って変更できます。 (このグループはhogehogeさんよろしくってことです)
access to filter=(gidNumber=10000) attribute=userPassword,lmPassword,ntPassword by dn="cn=Manager,dc=kushiro-ct,dc=ac,dc=jp" write by dn="uid=hogehoge,ou=people,dc=kushiro-ct,dc=ac,dc=jp" write by anonymous auth by self write by * read