Pam
為 AD 使用者創建 Unix 本地組
我正在針對 Samba 4 AD 實施 LDAP 身份驗證,以便管理員登錄到我們的 Linux 伺服器。
我成功地配置了 PAM,
libpam-ldapd
並libnss_ldapd
自動創建了使用者的主目錄。我現在面臨的問題是使用者將他們的映射 sambagidNumber
作為主要組,而該組在本地不存在。目前的情況是/home
目錄看起來像這樣(注意使用者主要組):drwxr-xr-x 2 user 1005 4096 Okt 13 16:01 user/
問題
sssd
在於它需要加入 Samba 4 AD 的域,現在情況並非如此,而且根本不會。由於我們有數百個這樣的 Ganeti VM,其中大多數都非常關鍵!管理員(特定 AD 組的成員)和擁有簽名 SSH 公鑰的管理員可以登錄這些機器。
我要求的是根據使用者重命名組並在本地自動創建這些組。我在某處讀到應該可以使用
wbinfo
and重命名它們rip map
。但我不知道該怎麼做。在本地創建組是次要的,因為我將創建一個管理員組並將它們全部添加到其中。主要問題是:
使用者主要組如何重命名
gidNumber
為uid
?非常感謝。
我找到了答案,只是沒有時間發布它。以下是針對 samba 4 AD 為使用者實施密碼認證的完整方法:
- 安裝 libnss-ldapd
- 獲取 samba 4 AD 的證書並將其添加到您的 CA
- 更新 CA 證書
- 使用 ldapsearch 檢查連接性
- pam-auth-update 並選擇應該使用 LDAP 的服務
- 如果需要,在登錄時使用創建首頁
- 打開
/etc/nslcd.conf
並修改如下:# /etc/nslcd.conf # nslcd configuration file. See nslcd.conf(5) # for details. # The user and group nslcd should run as. uid nslcd gid nslcd # The location at which the LDAP server(s) should be reachable. uri ldaps://dc.example.com:636/ # The search base that will be used for all queries. base DC=example,DC=com # The LDAP protocol version to use. #ldap_version 3 # The DN to bind with for normal lookups. #binddn nslcd binddn CN=binduser,CN=Users,DC=example,DC=com bindpw yourpassword # The DN used for password modifications by root. #rootpwmoddn cn=admin,dc=example,dc=com # SSL options #ssl start_tls #tls_reqcert never ssl on tls_cacertfile /etc/ssl/certs/ca.pem #tls_cacertfile /etc/ssl/certs/ca-certificates.crt # The search scope. scope sub filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)) map passwd uid sAMAccountName map passwd homeDirectory unixHomeDirectory map passwd gecos displayName filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)) map shadow uid sAMAccountName map shadow shadowLastChange pwdLastSet filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)) map group cn sAMAccountName map group gidNumber uidNumber map group memberUid sAMAccountName
- 測試登錄,您將看到:
user@test [Home]:~$ ll /home/ drwxr-xr-x 3 user user 4096 May 20 01:41 user/ user@test [Home]:~$ user@test [Home]:~$ user@test [Home]:~$ ll /home/user/ total 28 drwxr-xr-x 3 user user 4096 May 20 01:41 ./ drwxr-xr-x 4 root root 4096 May 19 23:35 ../ -rw-r--r-- 1 user user 220 May 19 23:35 .bash_logout -rw-r--r-- 1 user user 3771 May 19 23:35 .bashrc drwx------ 2 user user 4096 May 19 23:35 .cache/ -rw-r--r-- 1 user user 655 May 19 23:35 .profile -rw------- 1 user user 568 May 20 01:41 .viminfo
對於公鑰身份驗證,您可以將所有使用者的公鑰複製到所有伺服器和每個新使用者,這很難實現且非常容易出錯,或者您只需簽署所有使用者的 ssh 公鑰和所有主機的公鑰,這聽起來也很困難。我創建了一個使用者 CA 和主機 CA 並將它們部署到所有伺服器並使用 puppet 簽署了所有主機公鑰,使用者應該負責簽署他們的密鑰,也許將使用者 CA 放在 Web 應用程序中並使用 curl。