Linux – 无法删除具有 777 权限的已拥有文件

Linux – 无法删除具有 777 权限的已拥有文件

我有几个文件无法使用rf -Rf命令删除。我是这些文件的所有者,分配给这些文件的组也是我的用户所在的组。更奇怪的是,我可以编辑它们的内容,我可以更改它们的权限,但我不能移动或删除它们。

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

谁能告诉我发生了什么事?

答案1

要删除一个文件,您需要具有写权限包含的目录¹此文件。

这里的权限是,dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .除了 之外root,没有人可以删除此目录中的文件。所有者必须chmod先使用。


1. 这样做有充分的理由。通过使用 '删除' 文件rm,您实际上是在尝试解除链接从目录中删除它(硬链接的副本不会被删除)。

答案2

另一个可能的问题是属性

lsattr file

此命令将显示文件的属性,具有“i”属性的文件无法修改(也无法删除)

因此请检查文件的属性,如果已设置“i”属性,则删除该属性

chattr -i file

答案3

原因是父目录有chmod 705或类似的东西。您可以chmod通过以下命令获取父目录:

chmod -R 777 directory_name

此后,您可以删除该目录及其包含的文件。

答案4

仅出于知识目的:我使用 sudo 编辑 sudoers 文件解决了该问题:

Cmnd_Alias MOVE = /bin/mv, /bin/rm
user ALL=(postgres) NOPASSWD:MOVE

在此过程中,用户执行以下操作:sudo -u postgres rm /tmp/test.file

相关内容