為什麼所有 LDAP 使用者都使用 getent passwd 顯示?
我們正在使用具有 Solaris 和 RHEL 伺服器的 LDAP 伺服器,併計劃將更多伺服器遷移到 RHEL。但是,我們在所有 Red Hat 伺服器上都存在 LDAP 問題。
當我鍵入“getent passwd”時,會顯示整個 LDAP 伺服器上的所有使用者,而不僅僅是有權訪問此伺服器的使用者。通常大約有 10 到 50 人可以訪問伺服器,因此 Solaris 會列印出這個使用者列表,而 Red Hat 會列印出 LDAP 中存在的所有使用者的列表(大約 650 個)。
我更喜歡在 Solaris 上的行為,其中只有有權訪問伺服器的使用者使用“getent passwd”列出。
如何將 RHEL 配置為僅列出有權訪問伺服器的使用者?
您在 中限制訪問,雖然它控制誰可以訪問伺服器,但對伺服器可見
/etc/security/access.conf
的使用者沒有影響。這通常是您想要的:即使使用者無法登錄伺服器,如果她擁有共享文件系統上的文件,我想查看:alice
$ ls -l ~alice -rw-rw-r--. 1 alice alice 0 Aug 1 09:09 afile
代替:
$ ls -l ~alice -rw-rw-r--. 1 5234 5234 0 Aug 1 09:09 afile
也就是說,即使使用者無法登錄系統,我也希望系統了解使用者。
如果要限制對系統可見的使用者集,則需要配置 NSS 子系統以實現某種 LDAP 過濾器。你如何做到這一點取決於你使用什麼工具:
- user993553 提到
nss_ldap
,這是與 LDAP 集成的遺留工具。- 一些較新的發行版使用SSSD ,它在模組中包含一個
ldap_service_search_base
參數,LDAP
- 該
nslcd
程序具有filter
可應用於每個地圖的選項您使用哪種機制取決於您正在執行的 RHEL 版本:RHEL 6 具有
nslcd
和sssd
(我正在使用nslcd
),而我認為早期版本僅限於nss_ldap
.
如果這是一個選項,您可以按照以下方式擴展您的 ldap 架構
來自http://www.secure-computing.net/wiki/index.php/OpenLDAP/Authentication
為了獲得這個主機驗證,我們將添加一個自定義模式以允許 posixAccount 對像類上的主機屬性。您可以在此處下載新架構。要使用這個新模式,解壓縮 scn.schema 文件並將其保存到 /usr/local/etc/openldap/schema 並將以下行添加到您的 slapd.conf 文件中:
…
然後加入
nss_ldap.conf nss_base_passwd dc=base,dc=local?one?host=thismachinehost
語法是 base?scope?filter
這是在 freebsd 上測試的,其中 getent passwd 然後只列出匹配過濾器的使用者。