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 wie mv
, 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 diese mv
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
einem ld-linux
Bibliotheksfehler führt. Möglicherweise können Sie Folgendes verwenden:
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/su
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
:
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
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 erweitern sudo
(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 wie folder/foo
und ausgeweitet folder/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:
mv folder/foo folder/bar /bin /lib32 /lib64 /etc /home /root /var
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
.
/var/bin/su
direkt rennen ?