我有一个在工作目录内创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 +文件名