• ベストアンサー

PHPでLinuxカウントを用いて認証

お世話になります。 PHPを用いてHTTP認証システムの構築を検討しています。 Linuxに登録されているアカウント:パスワード情報を利用する ことが、絶対条件です。 (SQLや.htaccessは不可です) PHPでなくてもperlで実現可能でしたら、どちらでも構いません。 root権限はありませんが、依頼すれば管理者が プログラムをroot権限で動かせてくれます。 http://www.php.net/manual/ja/features.http-auth.php を参考にしましたが、パスワードやユーザ名を適当に 入力してもOKリザルトになってしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

>Linuxに登録されているアカウント:パスワード情報を利用することが、絶対条件です。 etc/passwdに登録されているログイン名、ログインパスワードを使用すると解釈してよろしいでしょうか。 Perlで行った場合です。 --------------------------------- #!/usr/bin/perl sub CheckUser; $p1 = $ARGV[0]; $p2 = $ARGV[1]; printf ("<%s><%s>\n",$p1,$p2); $ret = &CheckUser($p1,$p2); if ($ret == 1){ print "OK\n"; }else{ print "NG\n"; } #p1=ログインユーザ名 #p2=ログインパスワード # 戻り値 0=NG 1=OK sub CheckUser { my $uname = shift; my $upass = shift; (my $name,my $passwd) =getpwnam $uname; if ($name ne $uname){ return 0; } my $salt = $passwd; if (crypt($upass,$salt) eq $passwd){ return 1; } return 0; } ----------------------------------- CheckUserが今回必要なサブルーチンです。 引数は、ログインユーザー名、ログインパスワードです。 この引数はあなたが責任をもって与えてください。 OKの場合1、NGの場合0が戻ります。 尚、ROOT権限で実行しないと、正しい結果は得られません。

関連するQ&A