不要让用户删除自己创建的共享目录

不要让用户删除自己创建的共享目录

我有一组用户,称之为组。该组有一个共享文件夹,称之为共享。

我想要的是该组的用户在此文件夹中[创建和读取][文件和目录]。对于文件,我只希望该文件的所有者能够删除它。但对于文件夹,我希望只有所有者能够删除它,一旦它为空或仅包含该用户的文件,但如果它包含其他用户的文件,则无法删除该文件夹。 (或者甚至根本无法删除文件夹)。

现在的问题是,当该组中的用户创建一个目录(我们称之为子目录)时,该用户需要读、写权限,否则该用户无法在其中创建文件(因为用户权限位于组权限之前:优先级

d---rwx--T 4 root group shared
    drwxrwx---T 4 user group subdir
        -rwx------ 1 otheruser group file

但是当我这样做时,该用户可以删除该子目录中其他用户的文件。即使设置了粘性位,因为用户具有子目录的写权限。

所以我想到的一个解决方案是:对于共享中所有创建的文件夹,将默认用户设置为 root,但对于文件,将默认用户保留为创建它的用户。但我不知道如何做到这一点。

我尝试查看 setfacl、setuid 和 setgid,但这些似乎都不能解决我的问题。

这个帖子说这只能通过创建一个“检测对象创建并适当更改 ACL 的过程”来实现,但该帖子已过时(8 年前)。

我正在 Debian 10 上与 samba portocol 共享。

相关内容