Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
3  
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 – Sardathrion Sep 2 '11 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 Sep 3 '11 at 6:17
    
Don't forget the lsattr and chattr command... – user307335 Mar 13 '14 at 5:36
up vote 37 down vote accepted

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).

share|improve this answer

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.

share|improve this answer
1  
Please don't condone making directories writable by everybody. That's not good advice. – Toby Speight Apr 15 at 19:29

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

Explanation:

  • 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.

share|improve this answer

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
share|improve this answer
1  
The question shows that it's the directory permissions that don't allow writing. No need to look further. – Toby Speight Apr 15 at 19:30

You must log in to answer this question.

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