Samba+LDAP 環境での パスワード変更 CGI スクリプト

2003/03/28 更新
2003/10/01 更新

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を 使ってみましたってところです。

準備

Net::LDAPのインストール

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/) は 
# 動作しているという前堤です

ユーザ用CGIスクリプト

自分のパスワードを自分で変更する

注意
パスワードの変更を自分の権限で行うために属性 userPassword,lmPassword,ntPassword はユーザ自身で変更できなければなりません。
(slapd.conf の アクセス制限で by self write )

また mPassword、ntPasswordを作るために mkntpwd を 呼び出しています。 HTTPサーバがmkntpwd を実行できるかにも注意 します。 (mkntpwdのPerlのモジュールがあれば教えて下さい) higa@heart-land.jpさんから Crypt-SmbHash-0.02を教えていだだきました。 ありがとうございます。

管理者用CGIスクリプト

パスワードを強制的に変更する (パスワード忘れちゃった攻撃に対応するため)

管理者は勿論 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

Copyright 2003 Akira Takahashi (akira@kushiro-ct.ac.jp) 免責に関して