J'ai quelques fichiers que je ne peux pas supprimer avec la commande rf -Rf
. Je suis le propriétaire de ces fichiers et le groupe affecté à ces fichiers est également un groupe dans lequel mon utilisateur se trouve. Ce qui est encore plus étrange, c'est que je peux modifier leur contenu et que je peux modifier les autorisations associées, mais je ne peux pas déplacer ou supprime-les.
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
Quelqu'un peut-il me dire ce qui se passe?
Pour supprimer un fichier, vous devez disposer d'une autorisation en écriture sur le répertoire qui contient ¹ ce fichier.
Ici, les autorisations sont dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
Ainsi, personne (autre que root
) ne peut supprimer des fichiers de ce répertoire. Le propriétaire doit utiliser chmod
en premier.
-
1. Il y a de très bonnes raisons pour cela. En "supprimant" un fichier avec rm
, vous essayez en fait de le dissocier du répertoire (les copies liées ne seront pas supprimées).
Une autre question possible est l'attribut
lsattr file
Cette commande vous montrera l'attribut du fichier et un fichier avec l'attribut 'i' ne peut pas être modifié (et être supprimé)
alors vérifiez l'attribut de votre fichier et supprimez l'attribut 'i' si l'attribut a été défini
chattr -i file
La raison en est que le répertoire parent a chmod 705
ou quelque chose comme ça. Vous pouvez chmod
le répertoire parent à l'aide de la commande suivante:
chmod -R 777 directory_name
Ensuite, vous pouvez supprimer ce répertoire et les fichiers qu’il contient.
J'ai eu le même problème, et chmod
seul n'a pas fait l'affaire. J'ai d'abord dû changer le propriétaire (utilisateur et groupe) des fichiers que je voulais supprimer.
Sudo chown -hR root:admin dir_to_delete
Explication:
Sudo
: assurez-vous d'avoir les droits appropriéschown
: commande Linux pour changer le propriétaire d'un fichier-hR
: change le propriétaire du répertoire et de tous les sous-répertoires. Je l'ai trouvé ici .root
: nom du nouvel utilisateuradmin
: nom du nouveau groupeJ'avais déjà changé les modificateurs en 777; Je ne sais pas si c'était nécessaire ou non.