Pam

為 AD 使用者創建 Unix 本地組

  • May 23, 2018

我正在針對 Samba 4 AD 實施 LDAP 身份驗證,以便管理員登錄到我們的 Linux 伺服器。

我成功地配置了 PAM,libpam-ldapdlibnss_ldapd自動創建了使用者的主目錄。我現在面臨的問題是使用者將他們的映射 sambagidNumber作為主要組,而該組在本地不存在。目前的情況是/home目錄看起來像這樣(注意使用者主要組):

drwxr-xr-x 2 user 1005 4096 Okt 13 16:01 user/

問題sssd在於它需要加入 Samba 4 AD 的域,現在情況並非如此,而且根本不會。由於我們有數百個這樣的 Ganeti VM,其中大多數都非常關鍵!

管理員(特定 AD 組的成員)和擁有簽名 SSH 公鑰的管理員可以登錄這些機器。

我要求的是根據使用者重命名組並在本地自動創建這些組。我在某處讀到應該可以使用wbinfoand重命名它們rip map。但我不知道該怎麼做。在本地創建組是次要的,因為我將創建一個管理員組並將它們全部添加到其中。

主要問題是:

使用者主要組如何重命名gidNumberuid

非常感謝。

我找到了答案,只是沒有時間發布它。以下是針對 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。

引用自:https://unix.stackexchange.com/questions/397890