Impossible de supprimer le fichier, même lorsqu'il est exécuté en tant que root


48

Je suis en train de migrer une machine de RHEL 4 à 5. Plutôt que d'effectuer une mise à niveau, nous avons créé une nouvelle machine virtuelle (les deux machines sont dans un nuage) et je suis en train de copier des données entre les deux.

Je suis tombé sur le fichier suivant, que je dois supprimer de la nouvelle machine, mais que je ne peux pas, même lors de l'exécution en tant que root:

-rw-------  1 2003 2003  219 jan 11 14:22 .bash_history

Ce fichier se trouve dans / home / USER /, où USER est le compte du gars qui a construit la machine. Il n'a pas de compte sur l'ancienne machine. J'essaie donc de supprimer son dossier de départ pour que la nouvelle machine corresponde à l'ancienne, mais le message d'erreur suivant s'affiche:

rm: ne peut enlever `.bash_history': Opération non permise

(traduit du français: impossible de supprimer XXX, opération non autorisée)

J'ai essayé d'utiliser la commande suivante, mais cela n'a fait aucune différence:

chattr -i .bash_history

Le seul choix est-il de créer un utilisateur avec l'ID 2003 ou existe-t-il un autre moyen de le contourner?


Modifier

J'ai essayé d'utiliser rm -fet j'obtiens la même erreur. Je reçois le même type d'erreur en utilisant d' chmod 777abord.

J'ai pu accéder au chowndossier contenant le fichier que j'essaie de supprimer, il est donc:

drwx------ 2 root root 1024 jan 24 15:58 USER

Edit2

L'exécution de la lsattrcommande comme suggéré par Angus a donné le résultat suivant:

-----a------- USER/.bash_history
------------- USER/..
------------- USER/.

Le fichier est marqué en tant qu'add-only - lors de la modification de ce drapeau en utilisant, chattr -a .bash_historyj'ai pu supprimer le fichier.

Réponses:


55

Vérifiez les autorisations du répertoire . Pour supprimer un fichier à l'intérieur, il devrait être accessible en écriture pour vous.

chmod ugo+w .

et non immuable ou append-only:

chattr -i -a .

Vérifiez avec ls -laet lsattr -a.


merci .. je devais exécuter cela sur les fichiers nommés * qui n'ont pas été nettoyés après yum erase bind dans Centos 7 minimal
onxx

Malheureusement, /vendor/laracasts/generators/.git/objects/pack/lorsque je cours chattr -i -a ., je reçois chattr: Inappropriate ioctl for device while reading flags on .et je ne peux pas récupérer rmle .idxfichier compliqué que Composer a laissé (car "Operation not allowed").
Ryan

Ahhh, une solution pour moi était de sortir de mon VirtualBox Largent Homestead Vagrant dans Windows 10 (toujours avec Git Bash) et rmles fichiers à partir de là. Puis composer updatea pu terminer.
Ryan

chattr -i -atravaillé.
xji

Même après avoir utilisé Linux pendant près de 10 ans, je continue d’apprendre de nouvelles choses. Jamais entendu parler de l'attribut immuable avant!
Marlar

9

J'ai eu un problème similaire, mais j'avais essayé les deux permissions et chattr auparavant sans succès. Racine dans le terminal. CD à l'annuaire.

Cependant, ce qui a fonctionné pour moi a été de vérifier les autorisations du répertoire dans lequel se trouvait le fichier problématique. Si tout est correct, passez à:

chmod ugo+w filename

cela a échoué - alors:

chattr -i -a filename 

qui a été accepté - puis

chmod ugo+w 

qui a été accepté

rm filename

et c'était parti.

Fedora 25 sur poste de travail hp.


'chmod ugo + nom de fichier "a totalement fait l'affaire pour moi
Alfishe

1

'sudo' peut exécuter la commande 'rm' en utilisant le même user.group

NOTE : je ne sais pas si cela fonctionnera aussi pour les identifiants que vous avez.

Exemple:

ls /path/to/dir_being_deleted
  drwxrwxrwx 2 nfsnobody nfsnobody   4096 Mar  8 06:55 .
  drwxrwxrwx 7 nfsnobody nfsnobody   4096 Mar  8 06:57 ..
  -rwxrwxrwx 1 nfsnobody nfsnobody      0 Mar  8 06:55 filename.txt

sudo -u nfsnobody -g nfsnobody rm -rf /path/to/dir_being_deleted
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.