プロが教えるわが家の防犯対策術!

お世話になります。
PHPを用いてHTTP認証システムの構築を検討しています。
Linuxに登録されているアカウント:パスワード情報を利用する
ことが、絶対条件です。
(SQLや.htaccessは不可です)
PHPでなくてもperlで実現可能でしたら、どちらでも構いません。

root権限はありませんが、依頼すれば管理者が
プログラムをroot権限で動かせてくれます。

http://www.php.net/manual/ja/features.http-auth. …
を参考にしましたが、パスワードやユーザ名を適当に
入力してもOKリザルトになってしまいます。

A 回答 (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権限で実行しないと、正しい結果は得られません。
    • good
    • 0

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