Betriebssystem ist Centos 6.5 64-Bit
Ich habe eine TAR-Datei heruntergeladen und wollte sie entpacken mv
.
Ich habe nicht tariert, dann versehentlich (als root) mv folder/* /*
statt mv folder/* .
bash ausgeführt und gesagt, dass einige Dateien nicht überschrieben werden können, und dann um Erlaubnis für andere gebeten. Ich habe die Strg-Taste gedrückt.
Ich habe die Terminalsitzung offen gelassen, aber beendet su
.
Jetzt habe ich den Zugriff auf die meisten shell
Befehle verloren, kann ls
keine Verzeichnisse mehr erstellen und kann nicht mehr darauf zurückgreifen su
.
Der Webserver und die Dienste scheinen noch zu laufen. Ich kann nur sehr wenige Befehle ausführen, cd
ist einer von ihnen und wenn ich versuche, cd
auf /etc
oder /bin
es Fehler mit no directory found
.
EDIT einfach alle Ordner bemerkt fehlt /
( bin
, etc
, lib64
, root
, sbin
) wurde zu bewegt /var
Verzeichnis, habe ich versucht /var/bin/su
& bekommen:
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
/var/bin/su
direkt rennen ?/var/bin/su: user root does not exist
Ich denke, wir haben festgestellt, dass es nicht möglich ist, weil / etc bei / var / etc istAntworten:
Wenn Ihr System
busybox
installiert ist, können Sie dies verwenden, um die Dinge zurückzusetzen.busybox
ist eine Binärdatei mit vielen integrierten Standarddienstprogrammen. Dinge wiemv
,sh
,ls
usw.Aus Ihrem Kommentar zu Pavel's Antwort geht hervor, dass alles darin gelandet ist
/var
. Sie können es versuchen/var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
. Dadurch sollte der größte Teil Ihres Systems wieder betriebsbereit sein. Es gibt einige Verzeichnisse,/tmp
die auch als existieren/var/tmp
, sodass Sie sie nicht einfach verschieben können. Hoffentlich haben sich diesemv
beschwert und wurden allein gelassen.Eine Root-Shell bekommen
Sie haben auch erwähnt, dass Sie Ihre Root-Shell verloren haben und dass dies zu
su
einemld-linux
Bibliotheksfehler führt. Möglicherweise können Sie Folgendes verwenden:Hinweis: Bei diesem Versuch funktioniert es nicht. Dies liegt daran ,
su
erfordert mehrere Dateien in/etc
(passwd
,pam.d
und andere). Wenn dies/etc
noch intakt wäre, hätte dies gute Erfolgschancen.Ohne Busybox
Wenn Sie keine Busybox zur Verfügung haben, können Sie möglicherweise denselben ld-linux-Trick verwenden wie für
su
:Von einer Live-CD
Wie in den Kommentaren erläutert, stecken Sie ziemlich fest, wenn Sie die Root-Shell verloren haben. Grundsätzlich benötigen Sie Root-Rechte, um dies zu beheben. Die einzige Möglichkeit, dorthin zu gelangen, besteht darin, ein Dienstprogramm wie Ihre Berechtigungen zu verwenden
su
oder zu erweiternsudo
(beide sind derzeit nicht funktionsfähig) oder ein anderes Programm zu entführen, das bereits als Root ausgeführt wird (je nachdem, was ausgeführt wird, wahrscheinlich nicht möglich).Dies lässt die einzige Option eine Live-CD. Mounten Sie nach dem Booten einer Live-CD (oder eines Live-USB-Geräts oder was auch immer) einfach das Root-Volume und verschieben Sie die betroffenen Verzeichnisse
/var
wieder in ihr ursprüngliches Zuhause/
.Zusammenfassung dessen, was passiert ist
folder/*
hätte sich auf etwas wiefolder/foo
und ausgeweitetfolder/bar
./*
hätte sich auf so etwas ausgedehnt/bin
/lib32
/lib64
/etc
/home
/root
/var
. Das/var
ist der letzte Punkt.Wenn die Shell all diese Globs erweitert hätte, wäre sie ungefähr so gelaufen:
Wie
/var
das letzte Element in der Liste wurde alles darin verschoben.Warum
/var/bin/su
Fehler mit/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Fast alle Binärdateien unter Linux sind dynamisch mit verknüpft
ld-linux
.ld-linux
ist die Bibliothek, die für das Laden der anderen Bibliotheken verantwortlich ist, die von einer Binärdatei benötigt werden. Auf Ihrem System lebt dies bei/lib64/ld-linux-x86-64.so.2
. Seit dieses Verzeichnis verschoben wurde, funktioniert jede dynamisch verknüpfte ausführbare Datei nicht mehr.Der Grund, warum Busybox funktioniert, ist, dass Busybox statisch verknüpft ist. Es wird nicht verwendet
ld-linux
.quelle
busybox
klingt wie die perfekte Lösung, leider nicht installiert, wird dies, nachdem dies behoben wurde ... in der Zwischenzeit gibt es sowieso den Pfad zu korrigieren, damit Befehle ausgeführt werden können,/var/lib64/ld-linux-x86-64.so.2
anstatt/lib64/ld-linux-x86-64.so.2
? Dies scheint das zu sein, was die Befehle in/var/bin
/etc
denen nicht da sind (/etc/passwd
,/etc/nsswitch
,/etc/pam.d
, und wahrscheinlich mehr). Damit Siesu
arbeiten können,/etc
müssen Sie sich wieder an Ihrem ursprünglichen Standort befinden. Es sei denn, Sie haben eine Wurzelschale herumliegen, ich denke, Sie stecken fest :-(mv folder/* ./*
ist auch falsch. Sie sollten bei der Semantik der von Ihnen ausgeführten Befehle vorsichtiger sein. Dermv
Befehl mit mehr als zwei Argumenten nimmt nur alle Argumente außer dem letzten und verschiebt die Pfade, auf die sie zeigen, in das im letzten Argument angegebene Verzeichnis.Um alle Verzeichnisse (außer versteckten) aus dem Ordner in das aktuelle Verzeichnis zu verschieben, sollten Sie Folgendes verwenden:
Sie haben Ihr laufendes System beschädigt. Ihre Shell- und integrierten Befehle funktionieren weiterhin. Sie müssen eine Live-CD starten und die Verzeichnisse zurück verschieben. Mir ist keine integrierte Bash zum Verschieben / Umbenennen von Dateien bekannt, mit der Sie die Situation ohne Neustart beheben können. Weitere Informationen finden Sie in Patricks Antwort.
quelle
mv
Befehl sein sollen, um alle Dateien und Ordner vom Ordner in das aktuelle Verzeichnis zu verschieben?/
und Ihre/var
Verzeichnisse möglicherweise auf unterschiedlichen Partitionen befinden. In diesem Fall müssen Sie beide bereitstellen.Ich bin versehentlich / usr nach / usr_old umgezogen und alles ist zur Hölle gegangen. Zum Glück blieb ich in der Eingabeaufforderung und konnte den folgenden Befehl ausführen, um den Ordner usr wiederherzustellen:
quelle
WICHTIG Wenn Sie hier sind und
mv
falsch ausgeführt wurden, keineshell
Befehle ausführen können und Ordner im Stammverzeichnis (/
) fehlen , beenden Sie denSU
Vorgang zunächst NICHT,SU
bis er behoben ist, da Sie ihn nicht zurückerhalten. Wenn Sie über eine Remoteverbindung verbunden sind und die Verbindung trennen, können Siessh
den Server nicht in Ruhe lassen. Diereboot
meisten ausgeführten Dienste sollten in Ordnung sein. Sie können eine der vielen von Patrick vorgeschlagenen Lösungen ausprobieren ... Sie benötigen jedoch wahrscheinlich physischen Zugriff, wenn Sie es wie ich vermasselt haben.Einmal vor dem Computer habe ich ihn neu gestartet. Wie erwartet erhielt ich eine Kernel-Panik.
Ich dachte, dies wäre eine ziemlich einfache Lösung, lege eine Live-CD ein und gehe in den Rettungsmodus. BIS ZU DIESEM PUNKT WAR ES EINFACH - dann musste ich versuchen, mein Stammverzeichnis zu mounten. Ich brauchte jedoch mehr als nur einen einfachen Mount-Befehl.
Dies lag daran, dass ich, wie viele Menschen, ein lvm-Dateisystem hatte, und dies war das erste Mal, dass ich mich mit einer solchen Rettung befassen musste. Ich musste im Internet suchen, um zu sehen, was ich tun musste. Ich habe diese Informationen in diesem Beitrag zusammengefasst. Hier war mein Prozess, um mein Problem zu beheben.
1) Eingefügte Centos_6.4_min-CD
2) GUI-Oberfläche fragte, was ich tun wollte, wählte Rescue
3) Rescue hat versucht, das aktuelle System zu mounten, hat jedoch angegeben, dass ich keine Linux-Partitionen habe
4) Geben Sie ein,
shell
wann die Option angegeben wurdeZu diesem Zeitpunkt habe ich viele Dinge versucht, um das System zu mounten, ohne Glück. Ich bin mir ziemlich sicher, dass dies alle Schritte sind, die ich unternehmen musste (wegen lvm):
5) Meine Bände gescannt,
lvmdiskscan
6) Ran lvscan, zeigte alle als "inaktiv" aufgeführt
lvscan
7) Gerätemodul laden
modprobe dm-mod
8) Ändern Sie die vorhandenen Volumes in aktiv
vgchange -ay
9)
lvscan
Wieder gelaufen , jetzt alle Elemente als "aktiv" aufgeführt10) Mountpoint erstellt und die logische Partition gemountet
mkdir /mnt/root
mount /dev/VolGroup00/LogVol00 /mnt/root
11) Ordner zurück verschoben (SIE benötigen möglicherweise andere):
mv /var/{bin,etc,lib64,mnt,root,sbin} /
12)
reboot
13) ERFOLG!
quelle