FreeBSD 8.2 + Apache 2.2 + mod_auth_pam2:无法进行身份验证

FreeBSD 8.2 + Apache 2.2 + mod_auth_pam2:无法进行身份验证

我已经安装了 Apache 2.2 和mod_auth_pam2来自 ports 的版本,但无法使本地 UNIX 身份验证正常工作。当我访问本地网站的受保护部分时,我确实收到了身份验证请求,并且使用pam_permit.so,它可以正常工作。但是,当我更改pam_permit.so为真正的 时,pam_unix.so我在 中收到此消息httpd-error.log

[error] PAM: user 'foo' - not authenticated: authentication error

这是我的 Apache 配置的相关部分,尽管我不认为这是问题,因为 PAM 显然有效:

<Location /foo>
    AuthBasicAuthoritative Off
    AuthPAM_Enabled on
    AuthPAM_FallThrough off
    AuthType Basic
    AuthName "Secret place"
    Require valid-user
</Location>

这是我的/etc/pam.d/httpd,虽然我也不认为这是问题,因为它适用于pam_permit.so

auth    required    pam_unix.so
account required    pam_unix.so

那么我遗漏了什么?在 FreeBSD 下pam_unix.so工作需要什么?httpd

答案1

我不确定问题出在哪里;我认为这是因为www没有权限访问/etc/passwd。我认为授予它此访问权限是个糟糕的主意(即使只是尝试),所以我从端口中删除mod_auth_pam2并安装了mod_authnz_externalpwauth它还有一个显着的优势,那就是它是一个authnz模块(而不是一个auth模块),可以更好地与最新版本的 Apache 配合使用。效果很好!

这是我的新(相关)httpd 配置:

AddExternalAuth pwauth /usr/local/bin/pwauth
SetExternalAuthMethod pwauth pipe

<Location /foo>        
        AuthType Basic
        AuthName "Secret place"
        AuthBasicProvider external
        AuthExternal pwauth
        Require valid-user
        Require group wheel
</Location>

/etc/pam.d/pwauth

auth    required    pam_unix.so
account required    pam_unix.so

相关内容