为什么重命名目录中的文件需要执行权限?

为什么重命名目录中的文件需要执行权限?

假设我是一个目录的所有者,我有读写权限,但没有执行权限,目录结构如下:

x/           (drw-r--r--)
    y        (-rw-r--r--)
    z        (-rw-r--r--)

我知道如果没有执行权限,我无法cd访问该目录,但我认为重命名目录中的文件将被视为“写入”该目录。因此,令我惊讶的是,以下命令给出了拒绝的权限。

mv x/y x/w

为什么mv需要目录的执行权限x?这个mv命令有什么特别的吗?是内部mv使用cd还是什么?

答案1

看完之后这个答案对于一个相关的问题,我想我明白了。

目录是文件列表,“执行”该目录意味着沿着目录列表中的链接到达文件本身。因此,由于我没有 的执行权限x,因此无法解析命令中x/y实际文件的路径。 (为了获取实际的 file ,必须遵循in的目录条目,这是“执行”含义的一部分。)ymv x/y x/wyyxx

但是,如果我们授予用户执行但不写入的权限x,那么我们可以将文件从内部复制x到外部x,如下所示:

chmod u+x-w x
cp x/y y

相关内容