激活 Percona 的 PAM 配置

激活 Percona 的 PAM 配置

我正在尝试通过 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

我错过了什么?

答案1

问题原来是文件权限。当/etc/pam.d/mysql从 更改为0640( 0644o+r) 时,PAM 配置开始影响登录,正如预期的那样。

相关内容