我们在 Solaris 服务器上托管 LDAP,并使用 150 个 Solaris 客户端和 50 个 Linux 客户端。用户和组有一个他们可以访问的网络组(服务器主机名)列表。这意味着用户 apacheman01 只能使用其用户名/密码通过 SSH 访问特定服务器。到目前为止,一切正常。
ldap.conf:
[root@tst-01 ~]# cat /etc/openldap/ldap.conf
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://ldap1.tst.domain.tld ldap://ldap2.tst.domain.tld
BASE dc=tst,dc=domain,dc=tld
但是这些命令会显示 LDAP 服务器上所有可用的用户和组,而不仅仅是有权访问此服务器的用户。这也意味着当用户登录时,它可以“su -”到另一个甚至不应该有权访问该服务器的用户。
getent passwd
getent group
因此,LDAP 身份验证可以按初始 LDAP SSH 身份验证的方式工作,但是 getent passwd/group 不应列出 LDAP 上的所有用户/组,而应仅列出分配给这些用户/组的服务器/网络组。
答案1
这是预期的行为,如下所述getent(1)
:
getent 命令显示名称服务切换库支持的数据库中的条目,这些数据库包括 在 /etc/nsswitch.conf 中配置。如果提供了一个或多个关键参数,则只有 将显示与提供的键匹配的条目。否则,如果没有提供键,将显示所有条目 (除非数据库不支持枚举)。
如果您想限制的使用su
,请/etc/pam.d/su
改用:
auth required pam_wheel.so