Estou tentando configurar a autenticação via PAM para o PostgreSQL 9.3. Eu já consegui fazer isso funcionar em um servidor Ubuntu 12.04, mas não consigo fazer isso funcionar em uma instalação do Centos-6.
A linha pg_hba.conf
relevante:
host all all 0.0.0.0/0 pam pamservice=postgresql93
O pam.d/postgressql93
é a configuração padrão enviada com o pacote oficial postgresql 9.3:
#%PAM-1.0
auth include password-auth
account include password-auth
Quando um usuário tenta autenticar o seguinte, é relatado em secure
log:
hostname unix_chkpwd[31807]: check pass; user unknown
hostname unix_chkpwd[31808]: check pass; user unknown
hostname unix_chkpwd[31808]: password check failed for user (myuser)
hostname postgres 10.1.0.1(61459) authentication: pam_unix(postgresql93:auth):
authentication failure; logname= uid=26 euid=26 tty= ruser= rhost= user=myuser
O conteúdo relevante de password-auth
config é:
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
O problema é com o pam_unix.so
. Não é possível validar a senha e não é possível recuperar as informações do usuário (quando eu removo a entrada auth
de pam_unix.so
).
A instalação do Centos-6 tem apenas 5 dias e não tem muita bagagem.
O unix_chkpwd
é suid e tem direitos de execução para todos, então ele deve ser capaz de verificar o arquivo shadow (que não tem nenhum privilégio?).