Centos

強制 Linux 權限 Stickybits 或 ACL

  • June 1, 2016

我對在 Linux(即 CentOS 6)上強制繼承權限有疑問/困惑

設置:

1 個 CentOS 文件伺服器

2 個 CentOS NFS 客戶端

很多 x Windows Samba 客戶端

文件共享為 /srv/share 與 Samba 和 NFS 共享本地權限如下:h

drwxrwx---. 2 root sharegroup 4.0K Oct 22 14:41 share

所有通過 Active Directory 統一的 UID/GID,所有使用者的主要組是“sharegroup”。

安裝在 fstab 中的 NFS 客戶端為:

tst-lnx03:/srv/share    /mnt/share            nfs     defaults                0 0

通過 UNC 路徑的 Windows 框:

\\tst-lnx03\share

我想要什麼:

在 /srv/share 文件夾中寫入/創建的任何內容,無論它是通過 NFS 還是通過 Samba 來的,例如 770 根共享組。

我試過的:

我嘗試過使用 ACL:

setfacl -m d:u:root:rwx,d:g:"sharegroup":rwx,d:other:--- share

結果:

ls -lah
-rwxrwx---+ 1 testuser11 sharegroup    0 Oct 22 14:25 tu12-smb-win
-rw-rw----+ 1 testuser2  sharegroup    0 Oct 22 14:23 tu2-local-local
-rw-r-----+ 1 testuser4  sharegroup    0 Oct 22 14:24 tu4-NFS-lnx04

我嘗試過使用粘性位:

chmod 2770 share

結果:

ls -lah
-rwxr--r--  1 testuser11 k8 sharegroup   0 Oct 22 14:38 tu12-smb-win
-rw-r--r--  1 testuser2  k8 sharegroup   0 Oct 22 14:38 tu2-local-local
-rw-r--r--  1 testuser4  k8 sharegroup   0 Oct 22 14:38 tu4-NFS-lnx04

困惑

看起來 setfacl 是贏家,但對輸出有點困惑,為什麼粘性位版本會隨機添加其他讀取並剝離註銷組?

我想我可以將 NFS 創建的文件歸因於預設 umask 0022 而不是其他更改。我本來希望創建的視窗和本地創建的文件也匹配權限。

誰能解釋每種情況下發生了什麼?我有點困惑。如果您需要我的更多資訊,請大聲喊叫,我會提出來的。

所以你做了

setfacl -m d:u:root:rwx,d:g:"sharegroup":rwx,d:other:--- share

您所做的任何事情setfacl d: (稱為“預設 ACL”)都不會影響所有權,只會影響可訪問性。所以你可以決定“誰可以訪問”,而不是“誰擁有”。您剛剛使測試文件擁有所有者使用者和 root 使用者的 rwx 訪問權限;擁有組和“sharegroup”的 rwx 訪問權限。但是擁有使用者和擁有組的確定方式與沒有 setfacl 的方式完全相同。

文件的權限是意外的,因為使用 setfacl’d 文件,umask 不再考慮在內。每個文件都有其“自己的 umask”,簡稱為 mask(請參閱 參考資料getfacl)。

而你做到了

chmod 2770 share

又錯了。2770不粘,這是setgid位。Sticky 應該是 1770。 setgid 更改了新文件的所屬組,並且根本不影響它們的權限。與往常一樣,權限考慮到 umask(請參閱 參考資料umask)和應用程序創建文件建議的模式。

我不知道如何使用您擁有的工具正確實現您需要的東西。Linux 中沒有實現“目錄的 setuid”。

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