强制 Linux 权限 Stickybits 或 ACL

强制 Linux 权限 Stickybits 或 ACL

我对在 Linux(即 CentOS 6)上强制继承权限有疑问/困惑

设置:

1 个 CentOS 文件服务器

2 个 CentOS NFS 客户端

许多 Windows Samba 客户端

文件共享为/srv/share,与Samba和NFS本地共享权限如下:h

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

所有 UID/GID 通过 Active Directory 统一,所有用户的主要组是“sharegroup”。

NFS 客户端在 fstab 中挂载为:

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

Windows 框通过 UNC 路径:

\\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,而不是其他更改。我原本希望 Windows 创建的文件和本地创建的文件的权限也匹配。

有人能解释一下每种情况是怎么回事吗?我有点困惑。如果您需要我提供更多信息,请告诉我,我会提供。

答案1

所以你做到了

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

您所做的任何操作setfacl d: (称为“默认 ACL”)都不会影响所有权,只会影响可访问性。因此,您可以决定“谁可以访问”,但不能决定“谁拥有”。您刚刚使测试文件对拥有用户和 root 具有 rwx 访问权限;对拥有组和“共享组”具有 rwx 访问权限。但拥有用户和拥有组的确定方式与没有 setfacl 时完全相同。

文件的权限是意想不到的,因为使用 setfacl 的文件,umask 不再被考虑。每个文件都有其“自己的 umask”,简称为掩码(参见getfacl)。

你做到了

chmod 2770 share

又错了。2770 不是粘性的,这是 setgid 位。粘性的应该是 1770。setgid 更改了新文件的所有者组,但丝毫不影响其权限。权限照例考虑了 umask(请参阅umask) 以及创建文件的应用程序建议的模式。

我不知道如何用你现有的工具正确实现你所需要的东西。Linux 中没有实现“目录的 setuid”。

相关内容