« CentOS4でopenLDAPを使ったユーザ情報の管理その2 | メイン | perlのMCPANシェルの初期設定を変更する »

LDAPのパスワードをWEBブラウザから変更する

今回はuserminを使ってWEBブラウザからパスワードを変更出来るようにします。
openldapのパスワードを変更することを前提としています。
もちろんopenldapが設定されており稼働していることも前提です。

userminのダウンロードは以下

http://www.webmin.com/

現在の最新版は usermin-1.260.tar.gz でした。
これを解凍してインストールします。

# tar zxvf usermin-1.260.tar.gz -C /usr/local/src/
# cd /usr/local/src/usermin-1.260
# ./setup.sh

Config file directory [/etc/usermin]:
Log file directory [/var/usermin]:/var/log/usermin
Full path to perl (default /usr/bin/perl):
Web server port (default 20000):

ログファイルは/var/log配下がいいので変更しましたが
それ以外はデフォルトにしました。

次に日本語表示に対応させます。

# vi /etc/usermin/config
---
lang=ja_JP.euc
---

以下のファイルも関係しますので適宜修正しましょう。

/usr/local/src/usermin-1.260/changepass/lang/ja_JP.euc
/usr/local/src/usermin-1.260/changepass/lang/en
/usr/local/src/usermin-1.250/ulang/ja_JP.euc


使う機能をパスワードだけにする場合は以下のファイルを編集します。

# vi /etc/usermin/webmin.acl
---
user: changepass
---

また,rootで認証できないように設定します。

# vi /etc/usermin/miniserv.conf
---
denyusers=root
---

pamを利用してldapのパスワードで認証し,変更出来るようにします。
まずはpamの設定ファイルを以下のように作ります。

# vi /etc/pam.d/usermin
---
#%PAM-1.0
auth required pam_nologin.so
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
---

プログラムの修正も必要です。
以下のファイルを修正します。

# /usr/local/src/usermin-1.260/changepass/changepass.cgi
---
### if ($msg =~ /old|current/i) {
if ($msg =~ /login/) {
---

上記箇所をコメントアウトして書き直します。
cgiファイルの下から15行目あたりかと思います。

さらにPERLのモジュールが必要です。
モジュールはNet::SSLeay.pmとAuthen::PAMです。
このモジュールをインストールするにはPERLのシェルを動かします。
しかしCentOS4にはncftpgetコマンドが入っていないのであらかじめ
インストールしておきます。

http://www.ncftp.com/download/

そして以下のコマンドを入力します。

# perl -MCPAN -e shell

はじめはいろいろ聞いてくるがデフォルトでよさそうです。
ftpの指定は/usr/bin/ftpにしました。

cpan> install Net::SSLeay
cpan> install Authen::PAM

userminのページからldapパスワードを変更するには
以下のファイルを編集する必要があります。

# vi /etc/usermin/changepass/config
---
passwd_cmd=
###smbpasswd=smbpasswd
---
sambaは使っていないのでコメントアウトしました。


自動起動の設定も行っておきましょう。
スクリプトファイルがあるのでそれをコピーします。

# cp /usr/local/src/usermin-1.260/usermin-init /etc/init.d/usermin

次にシステムに認識させます。

# chkconfig --add usermin
# chkconfig --list usermin
usermin 0:off 1:off 2:off 3:on 4:off 5:on 6:off

ランレベル3と5で自動起動するようになりました。
私は2を削ったので3と5だけです。