在目录中创建文件的权限

在目录中创建文件的权限

我读了这里为了在 Linux 的目录中创建文件,必须对该目录具有写入权限。然而,在检查这一点时(在 Ubuntu Server 14 中),它不起作用。

osboxes@osboxes:~$ mkdir mydir

osboxes@osboxes:~$ chmod 200 mydir

osboxes@osboxes:~$ ls -l
d-w------- 2 osboxes osboxes 4096 May 25 09:52 mydir

osboxes@osboxes:~$ touch mydir/myfile
touch: cannot touch 'mydir/myfile': Permission denied

只有在向 mydir 添加执行权限后,我才能访问touch该文件。那么,对touch文件也需要执行权限吗?

编辑:来自@Pablo Bianchi參考我知道

寫作 (w)

如果您还具有执行权限,则可以重命名目录中的文件、创建新文件或删除现有文件。如果您没有执行权限,那么写入权限就毫无意义。

因此,我猜测确实需要执行权限才能使用写入权限来创建新文件。

答案1

目录只不过是一个文件,但它是一个特殊文件,包含指向文件和子目录(实际上也是文件)的硬链接列表。

如果您具有目录的读取权限,则您能够读取硬链接列表。

如果您对目录有写权限,则可以修改硬链接列表。

执行权限就像是通往下一级的门,如果你有执行权限,门就打开了。如果你没有执行权限,门就关闭了。

如果要在目录中创建文件,则需要能够修改硬链接列表,因此您需要对该目录具有写入权限。但这只是目录条目,文件本身将位于门后,因此您需要执行权限才能打开门。

想象一个房间,里面有一张桌子。门上贴着一张房间家具的清单,清单上只包含单词“桌子”。现在你想在房间里的桌子上添加一把椅子。你将单词“椅子”添加到门上的列表中。你需要打开门才能把椅子搬进来。

答案2

从一开始,创建目录后,您就应该拥有所有读写和执行的权限。

之后mkdir如果你使用ls -l命令,输出应该是这样的

drwxr-xr-x 2 osboxes osboxes 4096 May 25 09:52 mydir

为了返回该配置,您可以运行:

chmod 755 mydir

如果你只想删除除你之外所有人的权限

chmod go-rx mydir

阅读更多内容可能会有所帮助了解 Linux 权限和 chmod 用法

相关内容