Я пытаюсь настроить Percona с поддержкой LDAP через PAM, включая групповые сопоставления и ограничения. Моя настройка аутентификации Percona выглядит следующим образом:
INSTALL PLUGIN pam SONAME 'auth_pam.so';
create user 'dba'@'%' IDENTIFIED WITH auth_pam AS 'mysql';
grant all privileges on *.* to 'dba'@'%' with grant option;
create user 'dbr'@'%' IDENTIFIED WITH auth_pam AS 'mysql';
grant select on *.* to 'dbr'@'%';
CREATE USER ''@'' IDENTIFIED WITH auth_pam AS 'mysql, sudo=dba, mysql=dbr';
GRANT PROXY ON 'dba'@'%' TO ''@'';
GRANT PROXY ON 'dbr'@'%' TO ''@'';
И в /etc/pam.d/mysql у меня есть:
auth required pam_warn.so
auth required pam_ldap.so
account required pam_ldap.so
account required pam_succeed_if.so user ingroup mysql
С ними работает следующее:
И следующее поведение неверно (следует полностью отказаться от входа в систему):
Потребовалось некоторое время, чтобы в конечном итоге выяснить, что конфигурация в /etc/pam.d/mysql
не действует. Поведение такое же, даже когда этот файл отсутствует.
Насколько я понимаю, первое значение в строке mysql, sudo = dba, mysql = dbr
указывает Percona использовать конфигурацию PAM в файл с именем mysql, и во всех руководствах показано разрешение имени файла на /etc/pam.d/mysql
.
Что мне не хватает?
Проблема оказалась в правах доступа к файлам. Когда /etc/pam.d/mysql
был изменен с 0640
на 0644
(o + r), конфигурация PAM начала влиять на логин, как и ожидалось.