Webアプリケーションを使用しているユーザーを認証するために、PAMにホスティングシステムの「passwd」および「shadow」ファイルを使用させたいとします。
私はRedHat 6を使用しており、Apacheは2.2、Apacheモジュールmod_authnz_pamです。
Apache( )httpd.conf
の PAM 構成は次のとおりです。
<Location />
AuthType Basic
AuthName "basic_auth"
AuthBasicProvider PAM
AuthPAMService httpd
Require valid-user
</Location>
httpd
/etc/pam.d
次の設定でinというファイルを作成しました。
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
SELinuxが有効になっています。getenforce
「実施」を返します。私も以下を実行しました。
setsebool -P allow_httpd_mod_auth_pam 1
したがって、そのIPアドレスにアクセスしようとすると、ユーザーの資格情報を入力するように求められます。ただし、システム資格情報を入力すると、次のログが表示されます。
unix_chkpwd[29856]: 確認に合格しました。ユーザーが不明です。
unix_chkpwd [29856]:ユーザー(ユーザー名)パスワードの確認に失敗しました。
localhost httpd: pam_unix(httpd:auth): 認証失敗 logname= uid=48 euid=48 tty= ruser= rhost=xxx.xx.xx.x user=username
私のユーザー名は間違いなくpasswdファイルとShadowファイルに存在しますが、PAMではそれが存在しないと言います。
私は何を見逃していますか?
答え1
/etc/pam.d/httpd
これは同じまたは類似の設定です。
#%PAM-1.0
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session optional pam_keyinit force revoke
session include system-auth
session required pam_loginuid.so
アイデアは、ログインを認証するのではなく、pamスタックに別のファイルを表示させることです。通常、pam、pam、pamsystem-auth
などの他の多くのpamサービスで呼び出されます。login
su
sudo