希望将文件设置为不可删除但可更新

希望将文件设置为不可删除但可更新

我认为这在任何 Linux 文件系统上都不可能实现。但我希望有一个功能,可以将文件设置为不可删除,但保持文件可更新。请注意,后一个要求无法通过 chattr 的不可变位来满足。

这可能非常有用,因为我们大多数人在职业生涯中至少有过一次意外删除的情况。保持文件可更新非常重要,这样应用程序才能继续修改文件中的数据。


我想到的是各种数据库的数据文件。它们的大小在一段时间内或一直固定,具体取决于数据库设置。它们是就地修改的。我想这是一个很容易添加到 chattr 的功能,因为其他文件属性已经在那里了,尽管在常见的文件系统中并不总是实现。

DBA 绝对有责任对数据库进行良好的备份。但这是另一个话题。此外,系统管理员可能会意外删除数据文件。

答案1

您的问题在于,许多应用程序不会就地修改文件。相反,任何更改都将通过临时副本和重命名文件来完成。

你最好只使用好的备份,也许还有一个支持快照的文件系统(NTFS 上的 zfs/btrfs/VSS/etc)。这样,已删除的文件并没有真正消失,或者至少没有立即消失,因为它可以从备份/快照中恢复。

至于权限,在大多数情况下,删除和创建文件通常需要对文件所在的目录而不是特定文件设置权限。创建是将新文件添加到目录索引,删除是从目录索引中删除文件。可能可以从目录中删除写入权限,但仍保留文件的写入权限,具体取决于文件系统。不过正如我所提到的,这可能不适用于许多软件。

相关内容