Я пытаюсь настроить аутентификацию через PAM для PostgreSQL 9.3. Мне уже удалось заставить это работать на сервере Ubuntu 12.04, но я не могу заставить это работать при установке Centos-6.
Подходящий pg_hba.conf
линия:
host all all 0.0.0.0/0 pam pamservice=postgresql93
В pam.d/postgressql93
- это конфигурация по умолчанию, поставляемая с официальным пакетом postgresql 9.3:
#%PAM-1.0
auth include password-auth
account include password-auth
Когда пользователь пытается аутентифицироваться, в secure
журнал:
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
Соответствующее содержание password-auth
конфигурация:
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
Проблема в pam_unix.so
. Он не может проверить пароль и получить информацию о пользователе (когда я удаляю auth
вход pam_unix.so
).
Установке Centos-6 всего 5 дней, поэтому у нее не так много багажа.
В unix_chkpwd
является suid и имеет права на выполнение для всех, поэтому он должен иметь возможность проверять теневой файл (у которого вообще нет привилегий?).
Я решил проблему, изменив настройку Centos, чтобы она больше походила на настройку в Ubuntu.
Я создал группу shadow
с низким идентификатором группы и без участников. Я сменил группу на /etc/shadow
и /sbin/unit_chkpwd
в созданную группу shadow
. И наконец я сделал unix_chkpwd
SGID:
----r----- 1 root shadow 1049 Aug 22 16:38 /etc/shadow
-rwxr-sr-x 1 root shadow 34840 Nov 22 2013 /sbin/unix_chkpwd
С этими изменениями я могу использовать PAM для аутентификации пользователей системы для PostgreSQL. Я не думаю, что эти изменения сильно повлияли на безопасность. Хотя теневой файл теперь доступен для чтения пользователям без полномочий root, если они принадлежат к теневой группе.