プロが教える店舗&オフィスのセキュリティ対策術

ブラウザで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のコマンドを使えば
各ユーザーの認証やパスワードの変更がブラウザでできるという場合は、
教えていただけないでしょうか。

どうかご教示ください。よろしくお願いします。

A 回答 (3件)

system()とsudoとpasswdコマンドを組み合わせれば出来ると思います。


試していないので確証は持てませんが。
    • good
    • 0

Webminをインストールすればできますけど、それではダメなんでしょうね。

    • good
    • 0

samba と unix(linux)の パスワード同期に関する記事が参考になるかもしれ



http://www.google.co.jp/search?hl=ja&lr=lang_ja& …
    • good
    • 0
この回答へのお礼

ありがとうございます。
実は質問後も調べて
sambaのようにPAMを使うというのがわかり自己解決しそうだったので
ご迷惑をおかけしてはいけないと質問を閉じようとしていたところでした。
慌てて投稿してしまい申し訳ないです。

お礼日時:2006/10/18 03:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!