停止NFS挂载文件

我有文件存储在一个NFS挂载,我想防止被删除。 使用案例是我有一个Web应用程序的演示版本,每个演示使用相同的图像 – 当有人删除一个logging它删除相关的图像,文件等,但我不希望这些图像被删除,因为它们被使用被大家。 他们应该能够删除其他图像等,但不是我select的。

以前他们在本地磁盘上,我用:

chattr +i file 

这工作的一种享受 – 我把所有的ifles移动到NFS,当我尝试这个我现在得到:

 chattr: Inappropriate ioctl for device while reading flags on file 

目前,我有一个每15分钟运行一次的cron,并将这些文件从备用目录复制到正确的位置,但这并不理想,因为这意味着注册演示的人可能会在这段时间内看到丢失的图像窗户看起来很垃圾。 我可以重写应用程序的逻辑,如果我真的推动,但希望在文件系统级别的东西,可能会起作用。

这个回复( https://unix.stackexchange.com/a/90369/86224 )build议启用ACL的,但我无法做到这一点,我似乎无法得到chmod停止被删除的文件:

 -rw-r--r-- 1 owner owner 24751 Dec 23 16:30 file.ext 

有没有一种替代NFS的方法来停止文件被删除?

认为这应该工作。

  1. 使受保护的文件由root:root拥有。 例如chown root:root
  2. 确保在nfs装载上启用了root_squash。
  3. chmod 0644的文件。
  4. 如果你能摆脱它,chown root:根目录,并且chmod 755目录。 这是确保它不能被root以外的任何人删除的唯一方法。

所有者(通常是具有写权限的人)通常可以覆盖权限来删除目录中的文件,所以如果必须给该目录赋予写权限,则所有投注都将closures。

我知道你说过你不能启用它们,但我强烈build议你看一下ACL。 ACL在pipe理复杂环境中的权限方面非常棒。

/etc/exports 使用ro选项只将共享导出为只读。

 /path/to/nfs webserver.com(ro) 

如果你有select性的文件保护为只读,我会build议不要去ACL和权限修改的兔子洞,而只是做一个静态的资产装载和导出(ro)