假设我是一个目录的所有者,我有读写权限,但没有执行权限,目录结构如下:
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的目录条目,这是“执行”含义的一部分。)y
mv x/y x/w
y
y
x
x
但是,如果我们授予用户执行但不写入的权限x
,那么我们可以将文件从内部复制x
到外部x
,如下所示:
chmod u+x-w x
cp x/y y