我知道文件和目录有 +i 标志,但我有一个更深层次的问题。
有没有办法防止有权创建/访问/删除文件和文件夹的用户删除文件夹里面删除保护的文件夹?
该sudo chattr +i testfolder
标志无用,因为用户只能读取文件,而不能创建或删除文件。
该sudo chattr +a testfolder
标志不会有帮助,因为用户可以写入和读取文件,但只能附加编辑文件而不能删除它们。
我需要一个解决方案,让用户可以写入、访问和删除文件但不能删除根/父文件夹。
答案1
这基本上就是 /tmp 文件夹的用途。因此,只需设置与 /tmp 相同的权限即可:
chmod --reference=/tmp testfolder
应该testfolder
由不同的用户(例如 root)拥有。该用户将能够访问wrx
testfolder 下的文件和文件夹,但不能删除或修改 testfolder。
例如:
[root@host ~]# mkdir /test
[root@host ~]# chmod --reference=/tmp /test
[root@host ~]# ls -ld /test
drwxrwxrwt 2 root root 4096 Feb 15 09:33 /test/
[root@host ~]# su - user
[user@host ~]$ mkdir /test/foo
[user@host ~]$ rm -fr /test
rm: cannot remove `/test': Permission denied
如您所见,user
可以在下创建文件和目录/test
,但不允许删除它。