尝试在只写目录中创建/删除/重命名文件时权限被拒绝

时间:2016-11-13 07:36:51

标签: linux file-permissions permission-denied

网上有很多帖子说对目录的写权限允许受影响的用户访问该目录中的create/remove/rename文件,但我发现如果没有执行权限设置,它实际上无法完成。我试着打电话给open/fopen/remove/rename,但毫无例外,他们都失败了。

应该有我错过的东西或我误解的东西。有一些解释说目录上的操作通常涉及文件操作。如果它是对的,我想知道涉及什么操作。如果directory维护从filename到inode的映射,则重命名时似乎没有理由涉及文件操作。

如果涉及意外的文件操作,是否可以直接操作目录,绕过这些操作?

1 个答案:

答案 0 :(得分:0)

你是对的,网络充满了错误的东西,特别是对于unix文件权限规则。我在常见搜索引擎中找到的第一个链接都是错误的。非常有趣!

目录的文件权限是什么意思:

x你有"访问"到这个目录中的文件,这意味着你可以使用它们。如果您没有读取权限但具有访问权限,则可以使用您知道但无法查看的文件!

private boolean checkConnection(String host, int port) {
    try {
        Socket socket = new Socket(host, port);
        socket.close();
        return true;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

和写入权限用于更改目录的内容。因此,只有拥有该目录的写入权限,才能在dir中添加和删除文件!

因为无法读取/写入/执行您无法访问的目录内的文件,所以您始终需要访问dir才能使用其中的文件。

听起来有点奇怪,但只是以这种方式实施。