0

私は、PAMを一般的な方法で使用してユーザーを認証するための簡単なアプリケーションを作成しました:pam_start()pam_authenticate()+自分の会話関数+ pam_end()

資格情報を確認しているユーザーでアプリケーションを実行すると、認証に成功します。それ以外の場合、アプリケーションをユーザーから実行してユーザーAの資格情報を確認するBと、認証は失敗します。((

私の質問:なぜですか?渡されたサービス名としてもpam_start()試してみました。何も変わっていません。問題をデバッグするために進むべき方向はどれですか?または、別のpamサービスを使用してタスクを実行する必要がありますか?loginpasswd

2番目の場合のpsユーザー「A」は、パスワードと/ bin/falseシェルを持たないユーザーです。

4

2 に答える 2

0

ユーザー A には、パスワード ファイルを読み取る権限がない可能性があります/etc/shadow。これが、資格情報チェック プログラムが通常 root 権限を必要とする理由の 1 つです。

では、ルート権限で / root ユーザーとしてプログラムを実行すると、ユーザー A とユーザー B に対して機能しますか?

于 2011-12-30T18:35:06.610 に答える
0

「資格情報」をどのように確認していますか?読み取られているファイルはありますか?ユーザー A はそのファイルを読み取ることができますか?

pam_start に渡されるサービス名は、プロセスが実行できることに影響しません。su や passwd など、同様のことを行う必要があるプログラムは、実際には setuid プログラムであることに注意してください。

また、ユーザー A がユーザー B になりすますことを許可して、アプリケーション/モジュールにセキュリティ ホールを作成しないように注意してください。

于 2011-12-30T16:57:34.163 に答える