Impossibile eliminare il file, anche quando in esecuzione come root


48

Sto eseguendo la migrazione di una macchina da RHEL 4 a 5. Invece di eseguire un aggiornamento, abbiamo creato una nuova macchina virtuale (entrambe le macchine sono in un cloud) e sto copiando i dati tra i due.

Mi sono imbattuto nel seguente file, che devo rimuovere dalla nuova macchina ma non riesco a farlo, anche quando eseguo come root:

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

Questo file si trova in / home / USER /, dove USER è l'account del ragazzo che ha creato la macchina. Non ha un account sulla vecchia macchina, quindi sto provando a rimuovere la sua cartella home in modo che la nuova macchina corrisponda a quella precedente, ma ottengo il seguente errore:

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

(tradotto dal francese: impossibile rimuovere XXX, operazione non consentita)

Ho provato a usare il comando seguente ma questo non ha fatto differenza:

chattr -i .bash_history

È l'unica scelta per creare un utente con ID 2003 o esiste un altro modo per aggirare il problema?


modificare

Ho provato a usare rm -fe ottengo lo stesso errore. Ricevo lo stesso tipo di errore usando chmod 777prima.

Sono stato in grado di chownaccedere alla cartella che contiene il file che sto cercando di eliminare, quindi è:

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

Edit2

L'esecuzione del lsattrcomando come suggerito da Angus ha prodotto il seguente risultato:

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

Il file è contrassegnato come solo append - cambiando questo flag usando chattr -a .bash_historysono stato in grado di eliminare il file.

Risposte:


55

Controlla le autorizzazioni della directory . Per eliminare un file al suo interno, dovrebbe essere scrivibile da te

chmod ugo+w .

e non immutabile o solo appendice:

chattr -i -a .

Verificare con ls -lae lsattr -a.


grazie .. Ho dovuto eseguire questo su file con nome * che non si sono ripuliti dopo che yum ha cancellato il bind in Centos 7 minimal
onxx

Sfortunatamente, /vendor/laracasts/generators/.git/objects/pack/quando corro chattr -i -a ., ottengo chattr: Inappropriate ioctl for device while reading flags on ., e non posso rmil fastidioso .idxfile che Composer ha lasciato alle spalle (perché "Operazione non consentita").
Ryan,

Ah, una soluzione per me è stata quella di uscire dal mio Laravel Homestead Vagrant VirtualBox di nuovo in Windows 10 (usando ancora Git Bash) e rmi file da lì. Quindi è composer updatestato in grado di completare.
Ryan,

chattr -i -alavorato.
xji,

Anche dopo aver usato Linux per quasi 10 anni, continuo a imparare cose nuove. Non ho mai sentito parlare dell'attributo immutabile prima!
marzo

9

Ho avuto un problema simile, ma avevo provato entrambe le autorizzazioni e chattr precedentemente senza alcun risultato. Radice nel terminale. CD alla directory.

Tuttavia, ciò che ha funzionato per me è stato controllare le autorizzazioni della directory in cui si trovava il file problematico - se ok procedere a:

chmod ugo+w filename

questo non è riuscito - quindi:

chattr -i -a filename 

quale è stato accettato - allora

chmod ugo+w 

che è stato accettato

rm filename

ed era sparito.

Fedora 25 su workstation HP.


"chmod ugo + w nomefile" mi ha fatto
davvero

1

'sudo' può eseguire il comando 'rm' usando lo stesso user.group

NOTA : non sono sicuro che funzionerà anche con ID come te.

Esempio:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.