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