Datei kann nicht gelöscht werden, auch wenn sie als root ausgeführt wird

48

Ich bin dabei, eine Maschine von RHEL 4 auf 5 zu migrieren. Anstatt tatsächlich ein Upgrade durchzuführen, haben wir eine neue VM erstellt (beide Maschinen befinden sich in einer Cloud) und ich bin dabei, Daten zwischen den beiden zu kopieren.

Ich bin auf die folgende Datei gestoßen, die ich von der neuen Maschine entfernen muss, aber selbst als Root nicht kann:

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

Diese Datei befindet sich in / home / USER /, wobei USER das Konto des Benutzers ist, der die Maschine gebaut hat. Er hat kein Konto auf dem alten Computer, daher versuche ich, seinen Ausgangsordner zu entfernen, damit der neue Computer mit dem alten übereinstimmt. Es wird jedoch die folgende Fehlermeldung angezeigt:

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

(aus dem Französischen übersetzt: XXX kann nicht entfernt werden, Vorgang nicht erlaubt)

Ich habe versucht, den folgenden Befehl zu verwenden, aber das hat keinen Unterschied gemacht:

chattr -i .bash_history

Ist die einzige Möglichkeit, einen Benutzer mit der ID 2003 zu erstellen, oder gibt es einen anderen Weg, dies zu umgehen?


Bearbeiten

Ich habe versucht mit rm -f, und ich bekomme den gleichen Fehler. Ich erhalte die gleiche Art von Fehler chmod 777zuerst mit.

Ich konnte chownden Ordner, der die zu löschende Datei enthält, folgendermaßen öffnen:

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

Edit2

Das Ausführen des lsattrBefehls, wie von Angus vorgeschlagen, ergab die folgende Ausgabe:

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

Die Datei ist als "Nur anhängen" gekennzeichnet. Beim Ändern dieses Kennzeichens konnte chattr -a .bash_historyich die Datei löschen.

Reich
quelle

Antworten:

54

Überprüfen Sie die Berechtigungen des Verzeichnisses . Um eine darin enthaltene Datei zu löschen, muss diese von Ihnen beschreibbar sein

chmod ugo+w .

und nicht unveränderlich oder nur anhängen:

chattr -i -a .

Überprüfen Sie mit ls -laund lsattr -a.

angus
quelle
danke .. Ich musste dies auf benannten * Dateien ausführen, die nicht aufgeräumt wurden, nachdem yum erase bind in Centos 7 minimal
onxx
Leider bekomme ich /vendor/laracasts/generators/.git/objects/pack/beim Ausführen und kann die lästige Datei, die Composer zurückgelassen hat, nicht finden (weil "Vorgang nicht zulässig"). chattr -i -a .chattr: Inappropriate ioctl for device while reading flags on .rm.idx
Ryan
Ahhh, ein Workaround für mich war das Verlassen meiner Laravel Homestead Vagrant VirtualBox zurück in Windows 10 (immer noch mit Git Bash) und rmdie Dateien von dort. Dann composer updatekonnte vervollständigen.
Ryan
chattr -i -ahat funktioniert.
xji
9

Ich hatte ein ähnliches Problem, hatte aber zuvor erfolglos versucht, sowohl Berechtigungen als auch Chat zu verwenden. Wurzel im Terminal. CD ins Verzeichnis.

Bei mir funktionierte es jedoch, die Berechtigungen des Verzeichnisses zu überprüfen, in dem sich die fehlerhafte Datei befand. Wenn dies in Ordnung ist, fahren Sie fort mit:

chmod ugo+w filename

dies ist fehlgeschlagen - dann:

chattr -i -a filename 

was akzeptiert wurde - dann

chmod ugo+w 

was akzeptiert wurde

rm filename

und es war weg.

Fedora 25 auf HP Workstation.

Keith Mann
quelle
'chmod ugo + w filename "hat den Trick für mich
vollbracht
1

'sudo' kann den Befehl 'rm' mit derselben user.group ausführen

HINWEIS : Ich bin mir nicht sicher, ob dies auch für IDs wie Sie funktioniert.

Beispiel:

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
quelle