Active-Directory

帶有 winbind 的 Linux 嵌套組

  • September 19, 2014

我們有幾個使用 winbind 連接到 Active Directory 的 RHEL6 伺服器。所有伺服器都使用配置管理工具進行相同的配置。然而,當使用 groups 命令和/或 sudo 查詢組時,伺服器會產生不同的結果。但是,Getent 和 winbind 在所有伺服器上返回正確一致的結果。

user.name1 和 user.name2 是組 test.group1 的成員。test.group1 是組 test.group2 的成員

在所有伺服器上執行以下命令是一致的:

# getent group test.group1 
test.group1:*:16126:user.name1,user.name2

# getent group test.group2
test.group2:*:16125:user.name1,user.name2

# wbinfo --group-info test.group1 
test.group1:*:16126:user.name1,user.name2

# wbinfo --group-info test.group2
test.group2:*:16125:user.name1,user.name2

但是伺服器 A 錯誤地返回:

# groups user.name2
test.group1

伺服器 B 正確返回:

# groups user.name2
test.group1
test.group2

Samba 配置如下所示:

  winbind use default domain = true
  winbind offline logon = false
  winbind separator = + 
  winbind enum users = Yes
  winbind enum groups = Yes
  winbind nested groups = Yes
  winbind expand groups = 10
  server string = Linux Server
  strict locking = no
  wins server = 192.168.0.1
  idmap config * : range = 10000-50000000
  idmap config * : backend = rid
  idmap config SENT : range = 10000-50000000
  idmap config SENT : default = yes 
  idmap config SENT : backend = rid
  idmap uid = 10000-50000000
  idmap gid = 10000-50000000

nsswitch.conf 看起來像:

passwd:     files winbind
shadow:     files winbind
group:      files winbind

我會冒險猜測答案是在 PAM 中的某個地方,或者可能是一個 winbind 查找錯誤,關於在哪裡查找的任何想法或建議?Winbind/servers 已重新啟動,tdb 文件已重建。問題也可能是間歇性的。


編輯:

終於可以重新審視這個問題了。我已經使用 SSSD 而不是 winbind 重建了身份驗證,並且發生了同樣的情況

sssd.conf

[sssd] 
config_file_version = 2 
domains = sent.local 
services = nss, pam 
debug_level = 1

[nss] 

[pam] 

[domain/sent.local]
id_provider = ad 
auth_provider = ad 
access_provider = ad

default_shell = /bin/bash 
fallback_homedir = /home/domain/%u

use_fully_qualified_names = False

現在我們得到了一些有趣的結果,從未擔任過域管理員的使用者會得到與以前相同的結果,直到我們預先記憶體了我們知道他們是其成員的組,例如:

[root@test-smg1 - (11:46:40) sssd]#  id test.user5
uid=1084806380(test.user5) gid=1084800513(domain users) 
groups=1084800513(domain users)

[root@test-smg1 - (11:46:43) sssd]#  getent group testg2
testg2:*:1084806126:test.user5,test.user4,test.user3,test.user2

[root@test-smg1 - (11:46:46) sssd]#  id test.user5
uid=1084806380(test.user5) gid=1084800513(domain users) 
groups=1084800513(domain users),1084806126(testg2)

[root@test-smg1 - (11:46:49) sssd]#  getent group testg2-nest
testg2-nest:*:1084806125:test.user4,test.user3,test.user2,test.user5

[root@test-smg1 - (11:46:54) sssd]#  id test.user5
uid=1084806380(test.user5) gid=1084800513(domain users) 
groups=1084800513(domain users),1084806126(testg2),1084806125(testg2-nest)

這讓我認為這個問題可能更多地是在活動目錄和這個 AD 特定實現的方向上,而不是 linux 方面的問題。使使用者成為域管理員的成員會導致其所有組正確顯示。從域管理員中刪除使用者會使使用者處於此“固定”狀態。

看起來這是我們的 AD 設置中的一個非常具體的問題,“讀取組成員身份”會針對目前工作的使用者檢查經過身份驗證的使用者,而對於那些不工作的使用者則取消檢查。添加此權限可解決問題(儘管 winbind 需要花費大量時間來處理更改)。

安全面板

我在winbind上遇到了同樣的麻煩。

這是我的案例的一些分析細節:

  • 幾個使用者受到此問題的影響(總共 800 個使用者)。

  • 只有少數組失去(wbinfo -r ; id)(一些仍然被分配)到有問題的帳戶 - 可能不是由 AD 中的有問題的使用者權限引起

  • 組中的使用者列表是完整的(getent 組;不幸的是我沒有找到了通過 wbinfo 列出組使用者的方法)

  • 我所有的伺服器都使用相同版本的 samba,並且問題出現在所有具有相同使用者的伺服器上。

我將嘗試設置 SSSD 以確認,此問題與 AD 有關,而不是與 SAMBA 有關。

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