我想使用一个目录作为一种下落点,类似于每个 Mac OS X 主目录中的公共文件夹,即:某些用户(或每个人)应该能够在此目录中创建新文件,但什么也没有否则 - 没有新的子目录,没有修改或覆盖现有文件,没有任何类型的读取等。
发生这种情况的系统是带有 ZFS 的 OmniOS/Solaris,与 Solaris CIFS 模块作为 SMB 共享共享。因此,我读了有关 ACL 模型的文档经过一番尝试和错误后,它可以正常工作
/usr/bin/chmod A+user:alice:-w------------:-------:allow /pool/share/dropbox
如果没有任何继承,删除的文件将仅具有所有者的名称alice
,但由于她对各个文件没有任何权限,因此她不会在其他任何地方列出(例如,通过/usr/bin/ls -V .
)。
虽然这符合我的要求,但我想知道这是否是正确的方法,或者我是否应该显式添加任何其他权限,例如权限W
(写入扩展属性)或A
(更改时间戳/属性)。
在测试时我注意到,如果还想向目录和文件授予读取属性,则需要额外的 ACE(一个用于仅具有一级传播的文件,另一个用于目录本身):
A+user:alice:r-x---aAR-c--s:f--n---:allow
A+user:alice:rwx-----------:-------:allow
现在我想知道 - 如果读取需要这些附加属性值,那么写入是否也需要它们?我以后会失去任何有价值的东西吗?还是这更像是一个“如果你不知道,你就不需要它!”事物?
答案1
正如您的研究发现的那样,ACL 可能是最佳选择。
除了锁定目录创建之外,处理您想要的一切的最简单方法是使用粘滞位。即:查看 /tmp 和 /var/tmp 上的权限。