如何在不可变目录中创建新文件

如何在不可变目录中创建新文件

chattr +i /testdir我已经通过;更改了目录属性不可变但我需要在该目录中创建文件。

或者有什么方法可以让任何人都无法删除该目录,但所有者仍然可以在该目录中写入内容?

答案1

获得你需要的东西的方法是:

chattr +a /testdir

设置目录本身的权限,以便只有所有者具有写入权限。

a开关使得文件可以在内部创建和修改,但不能删除。

man页面chattr仅说明了a对文件的作用,但当在目录上使用时,它确实执行了上述操作,正如我在寻找执行相同操作的方法时发现的那样。

答案2

命令

chattr -i /testdir

将删除该标志。然后你创建新文件并再次

chattr +i /testdir

您应该只为组和其他设置父目录的rx,以防止删除目录

答案3

目录上设置的不可变属性仅影响该目录及其直接(例如,第一级)内容。不是子目录的内容。

因此,如果您只需要向此目录添加文件,而无需修改或删除其中的文件;那么使用a纳西尔·莱利(Nasir Riley)展示的属性就是正确的方法。

另一方面,如果您希望能够完全控制目录,同时防止目录被重命名/删除,那么您可以使用子文件夹,并仅使上层文件夹不可变,例如:

$ mkdir d1
$ mkdir d1/d2
$ sudo chattr +i d1

然后您可以验证您是否具有完全控制权d1/d2

$ touch d1/d2/f1
$ mv d1/d2/f1 d1/d2/f2
$ rm d1/d2/f2 

同时该d1文件夹是不可变的:

$ sudo rm -rf d1/
rm: cannot remove 'd1/d2': Operation not permitted

$ sudo mv d1 d3
mv: cannot move 'd1' to 'd3': Operation not permitted

相关内容