【问题标题】:Permission denied when attempt to create/remove/rename files in write-only directory尝试在只写目录中创建/删除/重命名文件时权限被拒绝
【发布时间】:2017-03-27 01:53:54
【问题描述】:

网上有很多帖子说目录的写权限允许受影响的用户对该目录中的create/remove/rename文件,但我发现如果没有执行权限集实际上无法完成。我尝试调用open/fopen/remove/rename,但无一例外都失败了。

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

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

【问题讨论】:

    标签: linux file-permissions permission-denied


    【解决方案1】:

    你是对的,网络上到处都是错误的东西,尤其是对于 unix 文件权限规则。我用普通搜索引擎找到的第一个链接都是错误的。很有趣!

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

    x 您可以“访问”此目录中的文件,这意味着您可以使用它们。如果您没有读取权限但有访问权限,则可以使用您知道但看不到的文件!

    mkdir one
    touch one/x.h
    chmod -r one
    
    ls one   // fails!
    cat one/x.h  // works!
    

    和写权限用于更改目录的内容。因此,只有在您对该目录具有写入权限的情况下,才能从该目录添加和删除文件!

    由于无法读取/写入/执行位于您无法访问的目录中的文件,因此您始终需要该目录的访问权限才能使用其中的文件。

    听起来有点奇怪,但就是这样实现的。

    【讨论】:

      猜你喜欢
      • 2020-02-12
      • 2017-03-27
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 2015-08-24
      • 2010-09-16
      相关资源
      最近更新 更多