Я установил 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