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.

Riches
la source

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.

Angus
la source
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.

Keith Mann
la source
'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
awltux
la source