web-dev-qa-db-fra.com

Linux - impossible de supprimer le fichier possédé avec les autorisations 777

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?

29
RaYell

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

60
Stéphane Gimenez

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
1
ShuMing

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.

0
Tomagen team

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és
  • chown: 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 utilisateur
  • admin: nom du nouveau groupe

J'avais déjà changé les modificateurs en 777; Je ne sais pas si c'était nécessaire ou non.

0
physicalattraction