我正在尝试通过 PAM 为 Percona 配置 LDAP 支持,包括组映射和限制。我的 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
有了这些,以下工作:
- 在 sudo(和 mysql)中以 LDAP 用户身份登录,获得 dba 的权限。
- 在 mysql 中以 LDAP 用户身份登录,获得 dbr 的权限。
- 尝试使用无效的用户名和/或密码登录,无法访问。
并且以下行为是不正确的(应该完全拒绝登录):
- 在 sudo(但不是 mysql)中以 LDAP 用户身份登录,仍然获得 dba 的权限。
- 以两个组中的 LDAP 用户身份登录,获得无权限访问。
花了很长时间才最终弄清楚配置/etc/pam.d/mysql
没有效果。即使该文件不存在,行为也是相同的。
我的理解是字符串中的第一个值mysql, sudo=dba, mysql=dbr
告诉 Percona 在名为 mysql 的文件中使用 PAM 配置,并且所有教程都显示文件名解析为/etc/pam.d/mysql
.
我错过了什么?
问题原来是文件权限。当
/etc/pam.d/mysql
从更改0640
为0644
(o+r) 时,PAM 配置开始按预期影响登录。