![Unix:有没有办法使文件可写,但不可删除,不可移动,不可复制?](https://linux22.com/image/135446/Unix%EF%BC%9A%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E4%BD%BF%E6%96%87%E4%BB%B6%E5%8F%AF%E5%86%99%EF%BC%8C%E4%BD%86%E4%B8%8D%E5%8F%AF%E5%88%A0%E9%99%A4%EF%BC%8C%E4%B8%8D%E5%8F%AF%E7%A7%BB%E5%8A%A8%EF%BC%8C%E4%B8%8D%E5%8F%AF%E5%A4%8D%E5%88%B6%EF%BC%9F.png)
我们有一些“活文件”,可供多人访问。 unix中有没有一种方法可以使文件只能读取和写入,但不能移动、复制或删除?
这样做的目的是确保网络上只有一份文件副本。
答案1
假设该文件和该文件所在的目录(其父目录)由完全独立的用户拥有,并且属于一个联合组......
使文件的父目录对于该组不可写将使该文件不可被该组的成员删除。通过使文件不可被组成员删除,您可以确保这些组成员无法将文件从其父目录中移走。
您无法使该文件可读和不可复制,因为读取文件本质上允许用户复制它。
“其他人”对该文件或父目录没有权限。
理想情况下,您将使用某种形式的系统(可能由 )支持git
,允许人们以受控方式协作处理文件。这将允许更容易的访问控制、远程访问以及修订控制。
答案2
在 Solaris(ZFS 上)上,您可以调用:
chmod S+cu file
在 FreeBSD 上,您可以调用:
chflags sunlink file
在 Linux 上,可以调用
chattr +u file
在所有情况下,您都需要成为超级用户才能设置标志。
Linux 在 ext* 文件系统上不支持此功能。