Назад | Перейти на главную страницу

FreeBSD 8.2 + Apache 2.2 + mod_auth_pam2: невозможно пройти аутентификацию

Я установил Apache 2.2 и mod_auth_pam2 из портов, но я не могу заставить работать локальную аутентификацию 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

Так что мне не хватает? Что нужно, чтобы иметь pam_unix.so работать на httpd под FreeBSD?

Я не уверен, в чем была проблема; Я думаю это потому что www не имел доступа к /etc/passwd. Я подумал, что это была ужасная идея предоставить ему этот доступ (даже для того, чтобы просто попробовать), поэтому вместо этого я удалил mod_auth_pam2 и установлен mod_authnz_external с участием pwauth, как из портов. У него также есть заметное преимущество: 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