I've couple of files that I cannot remove using rf -Rf command. I'm the owner of those file and the group assigned to those files is also a group my user is in. What's even weirder is that I can edit their content and I can change the permissions for them, but I can't move or delete them.

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

Can anyone tell me what is happening?

  • 7
    In general, consider using rm -rf DIRECTORY_NAME and not "*". It will save you from that one time when you will think yourself in directory /some/where/safe but are instead in /home Commented Sep 2, 2011 at 15:56
  • Actually I did try that, it was just those 3 files that I couldn't remove so I have simplified to procedure a bit for this post's purpose.
    – RaYell
    Commented Sep 3, 2011 at 6:17
  • Don't forget the lsattr and chattr command...
    – user307335
    Commented Mar 13, 2014 at 5:36

5 Answers 5


To remove one file you need write permission on the directory that contains¹ this file.

Here the permissions are dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 . So nobody (other than root) can remove files inside this directory. The owner must use chmod first.

1. There are pretty good reasons for that. By ‘removing’ a file with rm, you are in fact trying to unlink it from the directory (hardlinked copies will not be deleted).


Another possible question is attribute

lsattr file

This command will show you attribute of the file and a file with 'i' attribute cannot be modified (and be deleted)

so check your file's attribute and remove 'i' attribute if the attribute is been set

chattr -i file
  • 2
    The question shows that it's the directory permissions that don't allow writing. No need to look further. Commented Apr 15, 2016 at 19:30
  • Ok, but this was the answer I needed! Thank you so much!
    – Marc
    Commented Dec 22, 2020 at 15:04

The reason is that the parent directory has chmod 705 or something like that. You can chmod the parent directory by the following command:

chmod -R 777 directory_name

After this, you can remove that directory and the files it contains.

  • 5
    Please don't condone making directories writable by everybody. That's not good advice. Commented Apr 15, 2016 at 19:29
  • +1 - Agree, do not follow this advice, it's amazing, how this is plastered all over the internet... The amount of insecurity, caused by people advocating this is incredible... Commented Jan 12, 2017 at 11:08

I had the same problem, and chmod alone didn't do the trick. I first had to change the owner (user and group) of the files I wanted to remove.

sudo chown -hR root:admin dir_to_delete


  • sudo: make sure you have the proper rights
  • chown: Linux command to change owner of a file
  • -hR: change owner of directory and all subdirectories. I found it here.
  • root: name of new user
  • admin: name of new group

I had already changed the modifiers to 777; I don't know if that was necessary or not.

  • Permissions of files within directory are irrelevant, only write permission on directory itself matters. Probably before chown you had been neither owner of directory nor member of directory owning group.
    – sgnsajgon
    Commented Jun 6, 2017 at 20:45

Just for knowledge sake: I solved it using sudo editing the sudoers file:

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

In the procedure the user does:sudo -u postgres rm /tmp/test.file

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .