Linux

Linux acls 對域組使用錯誤的 gid,但數字 gid 可以

  • February 13, 2012

請參閱下面的編輯,因為事實證明問題出在 uid/gid 到 sid 的映射上,並顯示了有助於更快理解問題的解決方法。


我們有一台 Ubuntu 11.04 伺服器機器(我們稱它為數據)加入了 Windows 域,使用了同樣開放的工具 到目前為止一切都很好,因為我能夠:

  1. 使用 AD 憑據登錄電腦
  2. 為具有擴展 ACL 的文件和文件夾設置權限,它們就可以工作。因此,通過在文件夾上設置“域管理員”權限,我可以使用不同的域管理員帳戶登錄機器並訪問該文件夾。

因此電腦本身了解我屬於哪些域組並且可以正確處理權限。

但問題是當我想從 samba 共享訪問文件時。Windows 似乎不明白我們在談論相同的“域管理員”或任何其他域使用者/組。

細節

主文件夾已啟用 acl

我在 smb.conf 中的分享:

[home]
       path = /home/local/MYDOMAIN
       browsable = yes
       guest ok = no
       read only = no
       writeable = yes
       valid users = MYDOMAIN\Administrator, @MYDOMAIN\"Domain Users", @MYDOMAIN\"Domain Admins"
       write list = @MYDOMAIN\"Domain Users", @MYDOMAIN\"Domain Admins"
       nt acl support = yes
       create mask = 700
       directory mask = 700
       hide dot files = yes

到目前為止一切順利,鑑於文件夾已為“其他”設置了讀取/執行權限位,我可以訪問共享

因此,讓我們嘗試使用域權限集訪問 test_directory。我刪除了任何 unix 權限:

janis.veinbergs@data:/home/local/MYDOMAIN$ whoami
janis.veinbergs
janis.veinbergs@data:/home/local/MYDOMAIN$ id janis.veinbergs
...1319633408(domain^admins)...
janis.veinbergs@data:/home/local/MYDOMAIN$ cd /home/local/MYDOMAIN
janis.veinbergs@data:/home/local/MYDOMAIN$ sudo chown root:root ./test_directory/
janis.veinbergs@data:/home/local/MYDOMAIN$ sudo chmod 700 ./test_directory/

所以在機器上,如果我嘗試

ls ./test_directory/

顯然,我明白了

ls: cannot open directory ./test_directory/: Permission denied

所以我添加了“域管理員”的所有權限。(我本可以跳過 MYDOMAIN\ 這件事,因為 MYDOMAIN 是機器的預設域)

$ sudo setfacl -m g:MYDOMAIN\\"Domain Admins":rwx ./test_directory/

我可以在目錄中做事

$ echo "yay" >> ./test_directory/test.txt
$ ls ./test_directory/
test.txt

到目前為止一切都很好,數據可以理解域組。

但是,如果我嘗試在Windows 機器上訪問該共享(來自 powershell):

PS> whoami
mydomain\janis.veinbergs
PS> gci \\data\home\test_directory
Get-ChildItem : Access to the path '\\data\home\test_directory' is denied.

現在,從數據中,我將為其他人添加權限,因此我可以從 Windows 訪問該文件夾:

$ sudo chmod o+rx ./test_directory/

現在,從 Windows 中,我可以看到文件:

PS> gci \\data\home\test_directory


   Directory: \\data\home\test_directory


Mode                LastWriteTime     Length Name                                                                                      
----                -------------     ------ ----                                                                                      
-----       2012.02.06.     14:56          4 test.txt  

現在我可以在屬性視窗中查看權限(本地化,但你可以明白) 權限屬性

我想知道為什麼它顯示 Unix Group\domain^admins 而不是 MYDOMAIN\domain^admins ?我在這裡缺少什麼以及如何使其工作?

編輯:找到解決方法

我找到了一種解決方法和可能的原因,但不知道如何解決 事實證明,id 之間發生了一些錯誤的映射。

如果我使用 MYDOMAIN\Domain Admins 組的 wbinfo 查找 sid-to-gid 映射,我發現映射的 unix gid 是 10010。如果我使用 gid 而不是名稱設置權限,則權限有效並且 Windows 可以理解它們:

$ sudo setfacl -m g:10010:rwx ./test_directory/

當我以數字形式列舉權限以查看 gid 和 sid 時,我看到當設置像 MYDOMAIN"Domain Admins" 這樣的權限時,它實際上使用了不同的 GID

$ getfacl -n ./test_directory/
# file: test_directory/
# owner: 0
# group: 0
user::rwx
group::r-x
group:10010:rwx  <-- this is the actual GID mapping for MYDOMAIN\\"Domain Admins" group (setfacl -m g:10010:rwx) and it works when browsing share with windows
group:1319633408:rwx <-- this entry is when setting permission like setfacl -m g:MYDOMAIN\\"Domain Admins":rwx
mask::rwx
other::---

然後我在 smb.conf 中查看了我的 idmap 配置:

  idmap domains = ALL
  idmap config ALL:backend = lwicompat_v4
  idmap config ALL:default = yes
  idmap config ALL:readonly = yes
  idmap uid = 10000-33554431
  idmap gid = 10000-33554431

我看到 ACL 條目 1319633408 中的 gid 沒有進入定義的範圍。所以我嘗試將範圍擴展到10000-3355443100,重新啟動smbd,但它仍然沒有工作。

所以現在我有一個解決方法,使用 gid、sid 設置權限,但這不是使用者友好的。我應該怎麼做才能解決這個問題?

事實證明,我仍然必須安裝 likewise-cifs 支持。

這是執行這些命令的問題:

$ /opt/likewise/bin/samba-interop-install --install
$ service smbd restart
$ service winbind restart

歸功於同樣打開 6 和 Samba - 更好的開源文件伺服器

現在,當將 SID 映射到 GID 時,我得到了同樣使用的正確 GID,而不是短的 10010:

sudo wbinfo -n "Domain Admins"
<i get long SID: S-...-512>
wbinfo -Y S-...-512
1319633408

一個建議:同樣, Centrify不喜歡在名稱周圍加上空格的引號。相反,您應該使用反斜杠來記錄該組。因此,當我在 Debian 中使用 同樣打開的方式引用我的 Windows 組域管理員%Domain\ Admins時,我會寫. 您可以嘗試一下,看看它現在是否正確分配了 GID?

更新:

睡了一夜之後,我意識到我使用的不是同樣的 Open,而是他們的競爭對手 Centrify Express。這不是一個人對另一個人的投票,而是對其他可能在未來閱讀答案的人的澄清。

我有一台備用機器,可以在其上安裝 同樣打開,我將使用它來重新創建您的問題並創建一個新答案。對困惑感到抱歉!

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