Linux 显示我有写入权限,但我无法删除此文件。我已经检查过,我对每个父目录都有执行权限。知道这是怎么发生的吗?:
deployer@my-web:/usr/local/bin$ ls -la
total 10656
drwxr-xr-x 2 root root 4096 Feb 11 21:25 .
drwxr-xr-x 10 root root 4096 Feb 3 13:21 ..
-rwxr-xr-x 1 deployer deployer 1836198 Mar 18 19:05 composer
deployer@my-web:/usr/local/bin$ rm composer
rm: cannot remove ‘composer’: Permission denied
答案1
简而言之,您不仅需要文件的权限,还需要保存文件的目录的权限。在传统 UNIX 中,目录实际上是一种特殊的文件 - 其中包含指向其中文件的指针。所以这就是为什么您需要对目录具有写 (w) 访问权限。
在这种情况下,您需要更改(或让特权所有者更改)/usr/local/bin 的权限。
答案2
目录的权限与文件的权限并不完全相同。
写权限允许用户创建、删除或修改任何文件或子目录,即使该文件或子目录归其他用户所有。
对于目录,由于使用相同的命令,因此没有太大变化。但是,由于目录通常包含也需要分配给新用户或组的文件,因此我们使用 '-R' 旗帜,代表 '递归'——换句话说,所有子目录及其文件:
chown -R user:group dirname