帶有 winbind 的 Linux 嵌套組
我們有幾個使用 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 有關。