Linux - ne peut pas supprimer le fichier appartenant avec les autorisations 777

29

J'ai quelques fichiers que je ne peux pas supprimer à l'aide de la rf -Rfcommande. Je suis propriétaire de ces fichiers et le groupe affecté à ces fichiers est également un groupe auquel appartient mon utilisateur. Ce qui est encore plus étrange, c'est que je peux modifier leur contenu et que je peux modifier les autorisations pour eux, mais je ne peux pas 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?

RaYell
la source
5
En général, pensez à utiliser rm -rf DIRECTORY_NAME et non "*". Cela vous évitera une fois où vous vous penserez dans le répertoire / some / where / safe mais vous êtes à la place dans / home
Sardathrion - Reinstate Monica
En fait, j'ai essayé, ce n'était que ces 3 fichiers que je ne pouvais pas supprimer, j'ai donc simplifié la procédure un peu pour ce post.
RaYell
N'oubliez pas la commande lsattr et chattr ...

Réponses:

61

Pour supprimer un fichier, vous devez disposer d'une autorisation d'écriture sur le répertoire contenant ¹ ce fichier.

Ici, les autorisations sont dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .donc personne (autre que root) ne peut supprimer des fichiers dans ce répertoire. Le propriétaire doit utiliser en chmodpremier.

-
1. Il y a de très bonnes raisons à 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).

Stéphane Gimenez
la source
1

J'ai eu le même problème, et chmodseul je n'ai 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 que vous disposez des droits appropriés
  • chown: Commande Linux pour changer le propriétaire d'un fichier
  • -hR: changer 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.

attraction physique
la source
Les autorisations des fichiers dans le répertoire ne sont pas pertinentes, seule l'autorisation d'écriture sur le répertoire lui-même est importante. Probablement avant, chownvous n'aviez été ni propriétaire du répertoire ni membre du groupe propriétaire du répertoire.
sgnsajgon
1

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

vérifiez donc l'attribut de votre fichier et supprimez l'attribut «i» si l'attribut a été défini

chattr -i file
LJP-TW
la source
2
La question montre que ce sont les autorisations de répertoire qui n'autorisent pas l'écriture. Pas besoin de regarder plus loin.
Toby Speight du
0

La raison en est que le répertoire parent a chmod 705quelque chose comme ça. Vous pouvez chmodle répertoire parent par la commande suivante:

chmod -R 777 directory_name

Après cela, vous pouvez supprimer ce répertoire et les fichiers qu'il contient.

Équipe Tomagen
la source
4
Veuillez ne pas tolérer que les répertoires soient accessibles en écriture à tout le monde . Ce n'est pas un bon conseil.
Toby Speight
+1 - D'accord, ne suivez pas ce conseil, c'est étonnant, comment cela est plâtré partout sur Internet ... Le niveau d'insécurité, causé par les gens qui le préconisent est incroyable ...
André Figueira