自动为新创建的文件/文件夹设置追加属性?

自动为新创建的文件/文件夹设置追加属性?

我正在尝试设置一个文件夹,以便用户只能在其中创建或修改文件/文件夹,但不能删除它们。我尝试了“chattr +a”命令,并分别在 RHEL5.8 和 RHEL6.5 中得到了不同的结果。我尝试了以下命令:

# chattr +a /home/share

在RHEL5.8中,会自动为/home/share文件夹下新创建的文件/文件夹设置“append”属性,这正是我想要的。但在RHEL6.5中情况并非如此,导致用户仍然可以删除/home/share子文件夹下的文件/文件夹。例如:

$ mkdir /home/share/test-folder
$ touch /home/share/test-folder/test-file
$ rm /home/share/test-folder/test-file

文件“test-file”仍然可以被删除。

所以我的问题是,在RHEL6.5中,如何才能得到与RHEL5.8中相同的结果?或者还有其他解决方案吗?

谢谢。

答案1

一种选择是安装一个列出内核文件通知的工具(inotify)。然后将其配置为chattr在创建文件和目录后立即执行。

下面的示例使用incrond(在 Debian 和 Red Hat/CentOS EPEL 存储库中可用),但您可能想使用基于FAM,如果您使用 NFS 导出。

mkdir /srv/incrontest

/etc/incron.d/incrontest创建包含以下内容的文件:

      /srv/incrontest IN_CREATE chattr +a $@/$#

然后(重新)启动守护进程 systemctl start incron

systemctl enable incron(如果你生活在 RPM 世界,请确保你)

相关内容