Linux:创建文件和目录但不删除它们

Linux:创建文件和目录但不删除它们

我有一个在工作目录中创建目录和文件的过程,例如:

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

我需要避免删除/覆盖该用户创建的文件夹/文件,但允许创建后续文件夹/子文件夹/文件。我尝试了权限、gid、acl,但没有成功。

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

答案1

您应该能够通过设置扩展属性来实现某些目标聊天室

在您的目录中使用chattr +a。这将允许添加文件,但会阻止删除文件。

用于chattr +i 使您的文件不可变 - 一旦设置则无法更改。

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

具有“i”属性的文件无法修改:无法删除或重命名,无法创建指向此文件的链接,也无法向此文件写入任何数据。只有超级用户或拥有 CAP_LINUX_IMMUTABLE 功能的进程才能设置或清除此属性。

答案2

标准 POSIX unix 文件权限无法实现这一点。

最好的结果是,用户可以删除自己拥有的任何文件,但不能删除其他用户的文件。

chmod 1775 /directory

更新:您可以使用 SELinux 或 Apparmor 获得更精细的控制,但是从这种方法来看,您必须授予文件进程的权限。

更新:您可以选择对单独的文件使用系统仅附加标志。并非所有文件系统都如此:chattr +a 文件名

相关内容