保护公共共享中的子文件夹

保护公共共享中的子文件夹

带有 smb 和 afp 的 CentOS 机箱。

有一个每个人都有读/写权限的共享,我想阻止删除该共享中的几个文件夹,但仍允许在其中进行完全读/写。

从我阅读的 chmod 手册页来看,我不知道该怎么做。

有什么建议吗?

答案1

在父目录上使用粘滞位 ( o+t),并将您想要使其不可移动的目录或文件的所有者更改为其他用户。

如果您不希望他们从目录中删除任何文件(包括他们自己创建的文件),请继续执行上述操作,并将 SUID 位添加到目录 ( u+s)。这将导致所有文件都以目录所有者的身份创建(这可能会导致用户无法再次打开文件,具体取决于他们的 umask)。suid 位会自动级联到新目录,但 sticky 位不会,因此其保护仅针对一个目录中的文件,因此这将无法阻止用户在子目录中创建文件然后删除它们。

使用网络文件系统会使这稍微复杂一些,因为您需要做的就是将其更改为与 samba 用于连接的用户不同的用户(您是否将每个远程用户映射到一个“samba”用户或对每个人都使用本地用户名?),但您仍然需要具有允许 samba 访问目录内容的权限。

另请注意,即使文件本身已设置 +w,这也可能使某些编辑器无法编辑文件,因为许多编辑器实际上是通过写入临时文件来保存的,然后在将临时文件重命名为最终位置之前尝试将原始文件重命名为备份文件,但他们无法重命名粘性目录中不属于他们的文件。

答案2

恐怕你运气不好。要实现这种功能,网络文件系统服务器 (smb、afp) 需要支持 xacls,并且让其中一个 xacls 表示“防止删除此目录”。据我所知,Samba 和 NetATalk 没有这些功能。

我只知道一个系统支持此功能,那就是 Novell 的 Open Enterprise Server 中的 NCP 服务器,它支持目录上的此类“标志”。不过我不知道还有什么系统支持此功能。

相关内容