
關於如何使用帶有 unix 用戶端的 openLDAP 伺服器實現以下目標的任何想法
目標: a) 每個使用者應該透過LDAP 伺服器設定對不同的主機(unix 伺服器)有單獨的存取限制b) 每個這樣的登入使用者(如果允許)應該根據LDAP 伺服器設定在不同的電腦上有單獨的posixgroup 成員資格。例如,使用者 janaki 應為 server-1 中的 sudo posixgroup 成員,但不是 server-2 中的 sudo posixgroup 成員
它能夠實現 A 部分目標,具體如下:
使用 LDAP 覆寫(memberof 和 refint),為需要使用者單獨存取限制的每台電腦/主機建立具有成員屬性的單獨群組 (objectClass groupofNames)。將使用者 (posixAccount) 新增至 LDAP 伺服器中的這些群組(鍵入 groupofnames),以啟用對每個伺服器的驗證存取。在客戶端電腦(unix 伺服器)中,新增 nss_base_passwd 過濾器來測試memberof=cn=group-name(群組名稱代表 LDAP 中的此伺服器)。這是成功的並且正在發揮作用。
需要的是如何實現b部分?也就是說,openldap 伺服器和 unix 客戶端需要什麼配置才能實現這一點?
-問候賈納基
答案1
您可以在 LDAP 中使用物件類別 posixGroup。此物件類別可讓您建立與每個用戶端電腦上的 Unix 群組相對應的群組。然後,您可以使用 memberUid 屬性(指定使用者的 UID)將使用者新增至這些群組。在用戶端電腦上,您可以在 /etc/ldap.conf 檔案中設定 nss_base_group 過濾器以從 LDAP 伺服器檢索 posixGroup 物件。這允許客戶端電腦在使用者登入時使用來自 LDAP 伺服器的群組成員識別資訊來確定使用者的 Unix 群組成員身分。我可能建議的另一件事是使用 pam_ldap 模組對使用者進行身份驗證,並在使用者登入時根據 LDAP 伺服器設定設定其群組成員身份。
編輯1(請參閱註解以供參考):是的,您可以使用 posixGroup 物件類別和 nss_base_group 過濾器來實現為不同用戶端電腦上的不同使用者擁有不同 Unix 群組成員資格的目標。
為此,您可以在 LDAP 伺服器中為要在用戶端電腦上使用的每個群組建立 posixGroup 物件。然後,您可以使用 memberUid 屬性來指定屬於每個群組的成員的使用者的 UID。
在用戶端電腦上,您可以在 /etc/ldap.conf 檔案中設定 nss_base_group 過濾器以從 LDAP 伺服器檢索 posixGroup 物件。例如,您可以將下列行新增至用戶端電腦上的 /etc/ldap.conf 檔案:
nss_base_group ou=Groups,dc=example,dc=com?one
這將導致客戶端電腦在 LDAP 伺服器中的群組 OU 中搜尋 posixGroup 對象,並使用這些對像中的資訊在使用者登入時設定使用者的 Unix 群組成員身分。
至於使用 pam_ldap 模組對使用者進行身份驗證並在登入時根據 LDAP 伺服器設定設定其群組成員身份,是可以做到的。 pam_ldap 模組可以設定為使用 LDAP 伺服器來驗證使用者身分並在使用者登入用戶端電腦時設定其群組成員身分。
若要使用 pam_ldap 模組,您可以將下列行新增至用戶端電腦上的 /etc/pam.d/common-auth 檔案:
auth sufficient pam_ldap.so
這將導致 pam_ldap 模組使用 LDAP 伺服器對使用者進行身份驗證,並根據 LDAP 伺服器中的資訊設定其群組成員身份。