当父目录所有者不是同一个用户时,为什么不能重命名子目录

rag*_*rag 3 linux permissions files

可能重复:
无法重命名我拥有的目录

我试图理解为什么当用户 A 拥有目录 X 时,当用户 B 拥有 X 的父目录时无法重命名它。谁能解释一下?

$ls -l ~
drwxr-xr-x 11 root root   4096 Jan 31 09:43 mymedia

~/mymedia$ ls -l
drwxr-xr-x  6 rag rag  4096 Jan 31 08:34 Entertainment

~/mymedia$ mv  Entertainment/ entertainment
mv: cannot move `Entertainment/' to `entertainment': Permission denied
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 5

重命名文件时,您不会更改文件,而是更改其父目录。文件名是目录中的一个条目。想想电话簿,要更改与目录中电话号码关联的名称,您需要修改目录,而不是电话线。该名称仅与该目录中的电话线相关联。该电话号码可能在另一个目录中以不同的名称(硬链接)。

但是重命名目录有一个警告,因为目录包含对其父级(它们的..条目)的引用。为了能够移动目录,对旧父级(删除条目)和新父级(添加新条目)具有写权限是不够的,您还需要对目录本身具有写权限才能更新该..条目(如果新老父母是不同的)。