PerlでLinuxのユーザー認証・管理プログラム
ブラウザでLinuxのユーザー名とパスワードと入力して、
ユーザー認証してログイン後、Linuxユーザーの
パスワードを自分で変更できるプログラムが作りたいのです。
/etc/passwdにパスワードが直接記録されていれば簡単なのでしょうが、
シャドウパスワードなので苦労しています。LinuxはFedora Core3です。
まず、/etc/shadowに記録されているような、
$1$ではじまる暗号化されたシャドウパスワードをPerlで作るには
どのようにしたらいいのでしょうか。
pwconvのソースをみたらどんなアルゴリズムかわかると思い、
shadow-utilのSRPMをインストールしてみたりしましたがわかりませんでした。PHPのメーリングリストに
$salt = substr(md5(microtime()), 0, 9);
return crypt($password, "$1$" . $salt);
このようなコードがあったのですが、これでは$saltが毎回
代わってしまい、よくある
$salt=substr(暗号化されたパスワード,0,2);
if(crypt($pass,$salt) ne 暗号化されたパスワード){
&err("パスワードが違います");
}
のような認証ができないのではないかと思いました。
Linuxではどのようなアルゴリズムでシャドウバスワード
を作り、パスワードの認証をしているのでしょうか。
つまり、簡単にいうとPerlでシャドウパスワードを使った
Linuxユーザーのパスワード認証と
パスワード変更ができないか、ということなのです。
また、Perlでシャドウパスワードなど作らなくても
system()などを使ってLinuxのコマンドを使えば
各ユーザーの認証やパスワードの変更がブラウザでできるという場合は、
教えていただけないでしょうか。
どうかご教示ください。よろしくお願いします。