如何在linux服务器上使文件不可删除但可移动?

如何在linux服务器上使文件不可删除但可移动?

我正在管理我们服务器上的一些文件夹。服务器运行:

REDHAT_SUPPORT_PRODUCT="红帽企业 Linux" REDHAT_SUPPORT_PRODUCT_VERSION="7.6"

我在“/srv/”中创建了一个目录并将其命名为“test”。我在“test”中添加了另一个名为“archived”的目录。

我创建了project_managers用户组并向该组添加了一些用户。 project_managers 具有“/srv/test/”递归读/写/执行权限。

我希望 project_managers 能够将文件从一个目录移动到另一个目录,但不能从服务器中完全删除文件。

例如,我希望project_managers有权将“/srv/test/my_code.py”移动到“/srv/test/archived/”,但无权删除“/srv/test/my_code.py”

我已经完成: sudo chattr -R +i /srv/test/

它可以防止删除和移动文件。

是否可以使文件不可删除但可移动?

答案1

回答你的问题:移动和删除非常相似,我认为你需要不同的策略。

我会将目录置于版本控制之下,不仅仅是因为它看起来是代码。

版本控制系统的优点是您拥有文件历史记录。您可以简单地运行一个计划任务,例如每小时检查是否进行了更改,使用,例如git,并将更改应用到版本控制。

这样,您就可以允许人们移动内容、删除内容,无论什么……它仍然处于版本控制中,并且只需一个命令即可进行检索。

版本控制系统(如 git)的另一件事是集成了备份机制。您可以将任何更改转移到一个或多个其他系统,当我说更改时,它实际上是完整的文件历史记录......包括曾经做过的任何更改。

对于文本文件,存储开销最小,它只存储所做的更改。

唯一不让别人碰的就是版本控制系统。如果您使用 git,它将创建一个.git目录,其中将包含所有重要信息...您也可以使用其他系统,例如 Mercurial。

如果您确实想捕获所有更改,您可以尝试git 观察它可以监视 git 存储库,包括其中的所有子文件夹和文件,并将任何更改插入到 git 中。更好的是,gitwatch 可以发送另一台服务器上的 git 发生的更改(完整备份、完整历史记录)。

相关内容