- 締切済み
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のコマンドを使えば 各ユーザーの認証やパスワードの変更がブラウザでできるという場合は、 教えていただけないでしょうか。 どうかご教示ください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mflow
- ベストアンサー率63% (42/66)
system()とsudoとpasswdコマンドを組み合わせれば出来ると思います。 試していないので確証は持てませんが。
- lowrider_2005
- ベストアンサー率40% (1520/3748)
Webminをインストールすればできますけど、それではダメなんでしょうね。。
samba と unix(linux)の パスワード同期に関する記事が参考になるかもしれ http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=%EF%BD%93%EF%BD%81%EF%BD%8D%EF%BD%82%EF%BD%81%20passwd
お礼
ありがとうございます。 実は質問後も調べて sambaのようにPAMを使うというのがわかり自己解決しそうだったので ご迷惑をおかけしてはいけないと質問を閉じようとしていたところでした。 慌てて投稿してしまい申し訳ないです。