現時点での最新版に対応するよう記事を修正しました。
また新たなまとめ記事をこちらに記述しております。
長年の課題がやっとクリアできました!
とりあえずSamba+OpenLDAPの環境は整っているものとして話を進めます。
まずはperl用のSSLモジュールであるNet::SSLeayを導入します。
Net::SSLeay.pm
http://symlabs.com/Offerings/Net_SSLeay/
現在の最新版は1.21です。バージョンが変わってなければ以下のコマンドで導入できます。(事前にopenssl-develの導入が必要です)
cd /tmp
wget http://symlabs.com/Offerings/Net_SSLeay/Net_SSLeay.pm-1.21.tar.gz
tar zxvf Net_SSLeay.pm-1.21.tar.gz
cd Net_SSLeay.pm-1.21
perl Makefile.PL
make install
wget http://symlabs.com/Offerings/Net_SSLeay/Net_SSLeay.pm-1.21.tar.gz
tar zxvf Net_SSLeay.pm-1.21.tar.gz
cd Net_SSLeay.pm-1.21
perl Makefile.PL
make install
続いてUserminの認証機能に必要なAuthen::PAMを導入します。
Authen::PAM - a perl interface to the PAM library | Nikolay Pelov's Home Site
http://nik.pelov.name/Authen-PAM/
こちらの最新版は0.17です。バージョンが変わってなければ以下のコマンドで導入できます。(事前にpam-develの導入が必要です)
cd /tmp
wget http://nik.pelov.name/files/Authen/Authen-PAM-0.17.tar.gz
tar zxvf Authen-PAM-0.17.tar.gz
cd Authen-PAM-0.17
perl Makefile.PL
make
make install
wget http://nik.pelov.name/files/Authen/Authen-PAM-0.17.tar.gz
tar zxvf Authen-PAM-0.17.tar.gz
cd Authen-PAM-0.17
perl Makefile.PL
make
make install
これで前提ソフトウェアは揃いました。いよいよUserminを導入します。
Usermin
http://www.webmin.com/index6.html
最新版は1.250です。バージョンが変わってなければ以下のコマンドで導入できます。
cd /tmp
wget http://jaist.dl.sourceforge.net/sourceforge/webadmin/usermin-1.250.tar.gz
cd /usr/local/bin
tar zxvf /tmp/usermin-1.200.tar.gz
mv usermin-1.200 usermin
cd usermin
./setup.sh
wget http://jaist.dl.sourceforge.net/sourceforge/webadmin/usermin-1.250.tar.gz
cd /usr/local/bin
tar zxvf /tmp/usermin-1.200.tar.gz
mv usermin-1.200 usermin
cd usermin
./setup.sh
導入シェルでいくつか設定を聞かれますが、基本的にはデフォルトのままでかまいません。SSLの使用可否を聞かれた時(Use SSL (y/n):)だけは使用する(y)を入力してください。
実は私自身はVPNの内部でUserminを稼働させているためSSLは使用していません(SSLを使う場合証明書うんうんの警告が出て不便ですし)。その場合はAuthen::PAMは導入しなくても良いようです。またログファイルの出力先も/var/userminから/var/log/userminに変更しています。
導入はこれで完了です。ブラウザに以下のURLを入力してUserminにアクセスできることを確認します。
https://導入したホスト名またはIP:20000/
アクセスできない場合はiptablesの設定を確認してください。
そしたら各種設定を行います。まずはUserminで使用する機能の選択。今回はパスワードの変更のみに使用するので/etc/usermin/webmin.aclの内容を以下の通り変更します。
user: changepass
また今回の用途ではrootのパスワード変更は行う必要がない(むしろ行えない方がセキュリティ上好ましい)ので、rootユーザがUserminを使えないよう、/etc/usermin/configに以下の記述を追加します。
denyusers=root
続いてユーザ認証の機構を通常のパスワードファイルからAuthen::PAMモジュールに変更します。/etc/usermin/changepass/configの内容を以下のとおり変更します。
変更前:passwd_cmd=file
↓
変更後:passwd_cmd=
↓
変更後:passwd_cmd=
そうしたらUserminのPAM設定をします。/etc/pam.d/userminを以下のとおり作成(もし既に存在していた場合は変更)します。
#%PAM-1.0
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
基本的にはこれで完了なのですが、パスワード変更用のCGIモジュール(changepass.cgi)に一部不具合があるためこのままでは動きません。/usr/local/bin/usermin/changepass/changepass.cgiの内容を以下のとおり変更します。場所は関数"sub pam_change_func"の中(18行くらい下)です。
変更前:if ($msg =~ /old|current/i) {
↓
変更後:if ($msg =~ /login/) {
↓
変更後:if ($msg =~ /login/) {
この修正の内容は過去のバージョンと異なっています。過去バージョンの情報は多数見かけたのですが、現バージョンの情報にずっとたどり着けず宿題として残ってしまっていました…。
最後にUserminがrunlevelが3〜5の時に自動起動するよう、以下のコマンドを実行します。
cp -p /usr/local/bin/usermin/usermin-init /etc/rc.d/init.d/usermin
chown root:root /etc/rc.d/init.d/usermin
chkconfig --add usermin
chkconfig --level 345 usermin on
chown root:root /etc/rc.d/init.d/usermin
chkconfig --add usermin
chkconfig --level 345 usermin on
これで全ての準備が完了しました。userminを再起動します。
service usermin restart
先ほど稼働確認の時にもアクセスした、
https://導入したホスト名またはIP:20000/
にアクセスし、LDAP上のユーザでログインが出来ること、パスワードの変更が出来ることを確認してください。
参考にさせていただいたサイトは以下のとおりです。
@IT:LDAPによるパスワードの一元管理(1/3)
http://www.atmarkit.co.jp/flinux/rensai/root02/root02a.html
Usermin導入(Usermin) - Fedoraで自宅サーバー構築
http://fedorasrv.com/usermin.shtml
Windowsネットワーク用統合認証サーバー構築(OpenLDAP+Samba) - Fedoraで自宅サーバー構築
http://fedorasrv.com/openldap.shtml
日本Webminユーザ会 公式Webページ - フォーラム
http://jp.webmin.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=150&forum=1
有用な情報の数々に感謝いたします。
非常に参考になりました。
現時点ではUserminのバージョンが1.240に上がっていました。
ただchangepass.cgi問題の箇所は修正されていません。
公式フォーラムでも話題になった話なのに修正されないのは
何故でしょうねぇ。謎です。