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


29

我有几个无法使用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

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


5
通常,考虑使用rm -rf DIRECTORY_NAME而不是“ *”。这将节省您从一个时候,你会觉得自己在目录/一些/在/安全的,而实际上在/ home
恢复莫妮卡- Sardathrion

实际上,我确实做了尝试,只是无法删除这3个文件,因此出于这篇文章的目的,我简化了程序。
RaYell

不要忘记lsattr和chattr命令...

Answers:


61

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

这里的权限是dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .因此,除以外的任何人root都不能删除该目录内的文件。所有者必须先使用chmod


1.有充分的理由。通过使用“删除”文件rm,您实际上是在尝试将其与目录断开链接(硬链接副本不会被删除)。


1

我遇到了同样的问题,chmod仅靠这个并没有解决问题。首先,我必须更改要删除的文件的所有者(用户和组)。

sudo chown -hR root:admin dir_to_delete

说明:

  • sudo:确保您拥有适当的权利
  • chown:Linux命令更改文件所有者
  • -hR:更改目录和所有子目录的所有者。我在这里找到的。
  • root:新用户名
  • admin:新组的名称

我已经将修饰符更改为777;我不知道这是否必要。


目录中文件的权限无关紧要,仅目录本身的写权限很重要。可能在chown您既不是目录所有者也不是目录所有者组的成员之前。
sgnsajgon

1

另一个可能的问题是属性

lsattr file

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

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

chattr -i file

2
问题表明,是目录权限不允许写入。无需进一步寻找。
Toby Speight

0

原因是父目录具有chmod 705或类似名称。您可以chmod通过以下命令创建父目录:

chmod -R 777 directory_name

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


4
请不要宽容目录所有人都可写。那不是好建议。
Toby Speight

+1 -同意,不遵循这个建议,这是惊人的,这是怎么贴满所有在互联网上...不安全的量,引起人们崇尚,这是令人难以置信的...
安德烈·费圭
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.