0

Linuxでsysユーザーとパスを認証するカスタムPAMスクリプトを作成しようと2日間試みています。

C、Python、Perl で例を作成しましたが、それらすべてで同じ問題があります。

シェルでスクリプトをテストすると、すべてうまくいきます。

私はそれらをテストします

# ./script;echo $?

そして、0または1を返します。

しかし、mod_authz_external と Apache で使用しようとするとすぐに動作しなくなります。

有効なユーザーであっても、1 が返されてログインできません。

PAM に問題があり、おそらく Apache 環境に問題があるようです。

PAM を使用するには環境変数を設定する必要があるとどこかで読みましたが、その方法がわかりません。

C、Perl、Python の例を次に示します。

C: http://pastebin.com/v9Yn9xvK

Perl: http://pastebin.com/cqzqztYg

パイソン: http://pastebin.com/32cvvCjS

好きなものを選んでください。それらはすべて同じように機能します...終了コード0または1を返します。

すべてのヘルプまたはヒントをいただければ幸いです。

ありがとう!

4

1 に答える 1

0

システム ユーザーを PAM で認証している場合は、libpam_unix.so を経由します。pam_unix のマンページから:

ヘルパー バイナリ unix_chkpwd(8) は、ユーザーのパスワードが読み取り保護されたデータベースに保存されている場合に、そのパスワードをチェックするために提供されています。このバイナリは非常に単純で、それを呼び出したユーザーのパスワードのみをチェックします。

そのため、Web サーバーからユーザーを認証する場合は、ユーザー 'apache' などで実行している可能性が高くなります。pam_unix ができることは、ユーザー 'apache' を認証することだけですが、これはおそらくあなたが望むものではありません。pwauth は何らかの方法でこの制限を回避する必要があります。

于 2014-08-18T19:43:53.380 に答える