强制Linux权限Stickybits或ACL

我有一个关于在Linux上强制inheritance权限的问题/困惑(即CentOS 6)

设置:

1个CentOS文件服务器

2个CentOS NFS客户端

许多x Windows Samba客户端

与Samba和NFS本地权限共享的文件共享是/ srv / share如下所示:h

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

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

在fstab中挂载的NFS客户端为:

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

通过UNCpath的Windows框:

 \\tst-lnx03\share 

我会喜欢的:

在/ srv / share文件夹中写入/创build的任何内容,无论它是通过NFS还是Samba来传递770根​​共享组。

我曾经试过的:

我曾尝试使用ACL:

 setfacl -md: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创build的文件归因于0022的默认umask而不是其他更改。 我会期望创build的窗口和本地创build的文件也匹配permisions。

任何人都可以解释在每种情况下发生了什么? 我有点困惑。 如果你需要更多的东西,只是大喊大叫,我会放弃。

所以你做到了

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

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

文件的权限是意料之外的,因为使用setfacl'd文件,umask不再被考虑在内。 每个文件都有其“自己的umask”,简称为掩码(请参阅getfacl )。

你做到了

 chmod 2770 share 

又错了。 2770不粘,这是一点点。 Sticky应该是1770.Setgid更改了新文件的拥有组,并没有影响他们的权限。 权限,像往常一样,考虑到umask(见umask )和应用程序创build文件build议的模式。

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