我读了这里为了在 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 用法