网上有很多帖子说目录的写权限允许受影响的用户在该目录中创建/删除/重命名
文件,但我发现实际上如果不执行就无法完成权限集。我尝试调用open/fopen/remove/rename
,但无一异常(exception),它们都失败了。
应该有我遗漏或误解的地方。有一些解释说对目录的操作通常涉及文件操作。如果它是正确的,我想知道涉及什么操作。如果目录维护从文件名到 inode 的映射,那么重命名时似乎没有理由涉及文件操作。
如果涉及非预期的文件操作,是否可以直接操作目录,绕过此类操作?
最佳答案
你是对的,网上充满了错误的东西,尤其是对于 unix 文件权限规则。我用普通搜索引擎找到的第一个链接都是错误的。非常有趣!
目录的文件权限是什么意思:
x 您可以“访问”此目录中的文件,这意味着您可以使用它们。如果您没有读取权限但有访问权限,您可以使用您知道但看不到的文件!
mkdir one
touch one/x.h
chmod -r one
ls one // fails!
cat one/x.h // works!
写权限用于更改目录的内容。因此,只有在您对该目录具有写权限的情况下,才能在该目录中添加和删除文件!
因为无法读取/写入/执行您无法访问的目录中的文件,所以您始终需要该目录的访问权限才能使用其中的文件。
听起来有点奇怪,但就是这样实现的。
关于linux - 尝试在只写目录中创建/删除/重命名文件时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40571613/