RedHat Apache 的 PAM 配置中缺少什么?

RedHat Apache 的 PAM 配置中缺少什么?

我试图让 PAM 使用托管系统的“passwd”和“shadow”文件来验证正在使用 Web 应用程序的用户。

我使用的是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我创建了一个名为in 的文件,/etc/pam.d配置如下:

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=用户名

我的用户名肯定存在于 passwd 和影子文件中,但不知何故 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 堆栈查看其他文件,而不是尝试验证登录。system-auth通常由许多其他 pam 服务调用,例如loginsusudo

相关内容