Centos

LDAP 在 Linux 客戶端上顯示過多的使用者和組

  • June 11, 2013

我們在 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 上的所有使用者/組,而僅列出分配給這些使用者/組的伺服器/網路組。

這是預期的行為,如下文所述getent(1)

getent 命令顯示名稱服務切換庫支持的數據庫中的條目,這些庫是
在 /etc/nsswitch.conf 中配置。如果提供了一個或多個關鍵參數,則只有
匹配提供的鍵將被顯示。否則,如果沒有提供密鑰,將顯示所有條目
(除非數據庫不支持列舉)。

如果要限制使用su,請/etc/pam.d/su改用:

auth       required   pam_wheel.so

引用自:https://serverfault.com/questions/514874