Linux:创build文件和direcotire但不删除它们

我有一个在工作目录内创build目录和文件的进程,例如:

/workingdir/file1 /workingdir/file2 /workingdir/dir1/file1 /workingdir/dir1/dir2/file1 /workingdir/dir1/file2 

我需要避免删除/覆盖为该用户创build的文件夹/文件,但允许后续文件夹/子文件夹/文件的创build。 我尝试权限,gid,acl没有运气。

什么是正确的方法来做到这一点? (如果需要,我可以使用cron作业)

您应该可以通过使用chattr设置扩展属性来实现某些function。

在您的目录上使用chattr +a 。 这将允许他们被添加到,但将阻止他们删除文件。

使用chattr +i使你的文件不可变 – 一旦这个设置,它们不能被改变。

具有“a”属性集的文件只能以附加模式打开才能写入。 只有拥有CAP_LINUX_IMMUTABLE能力的超级用户或进程才能设置或清除该属性。

具有'i'属性的文件不能被修改:不能被删除或重命名,不能创build链接到这个文件,也没有数据可以被写入文件。 只有拥有CAP_LINUX_IMMUTABLE能力的超级用户或进程才能设置或清除该属性。

这对于标准的POSIX unix文件权限是不可能的。

您可以完成的最好的目录是用户将能够删除他们自己的任何文件,但不是其他用户的文件。

 chmod 1775 /directory 

更新:你可以通过SELinux或Apparmor获得更好的控制权,但是从这个方法来说,你必须给文件上的进程赋予权限。

更新:您可以select使用系统只附加标志为单独的文件。 不是在所有文件系统上: chattr +文件名