問題:
一個隸屬於16個以上組的用戶無法寫入NFS/NAS/Samba共享。 在Samba 10級調試日誌中,可能會看到以下消息
- [2011/10/20 17:53:03.290707, 0] lib/util.c:1468(smb_panic) PANIC (pid 6543): sys_setgroups failed
這有什麼原因嗎?
原因:
- NFSv3對一個用戶所屬的組數敏感。 進一步調查表明它只能識別前16個組
- 如果某用戶是16個以上AD組的成員,這些AD組又映射到Zone中的Unix組,則將從第17個組開始拒絕訪問。
- 用戶將沒有任何權限對需要第17個組成員身份的NAS共享執行讀/寫/執行操作。
解決方法:
減少組的數量或使用adsetgroups命令(參見用法手冊頁)更改組的順序。
對於Samba,有兩種選擇:
- 將每個AD用戶的啓用組數減少到16個以下
- 在smb.conf的[global]部分中,設置以下內容
- ignore syssetgroups error = Yes
- (這意味着組將不被應用。如果用戶希望實施組成員關係,那麼這將是一個問題,但是samba可以工作。)
- 使用支持65535組的OS平臺,例如現代Linux(2.6內核)。
注意事項:
- 這是一個臨時解決方案。 對於本地用戶,將根據/etc/group文件中定義組的順序返回這些組。
- 例如,如果在/etc/groups中以遞增順序定義了Group01-Group16,則運行groups命令將以相同的順序顯示組。 混合文件中的順序將相應地反映在命令中。 對於AD用戶,它取決於順序,並且是字母
決議:
在撰寫本文時,減少組數或使用NFS V4(據報道沒有此限制)是唯一已知的解決方案。
有關更多參考,也請參考以下內容:
- http://nfsworld.blogspot.com/2005/03/whats-deal-on-16-group-id-limitation.html
- 要使其正常工作,需要做的全部工作就是rpc.mount–management-gids。即使用–management-gids選項