Versehentlich verschobene Verzeichnisse unter root

7

Ich habe diesen Befehl versehentlich ausgeführt

sudo mv /* /applications/minced/

anstatt

sudo mv ./* /applications/minced/

Dies ist alles, was im Stammverzeichnis übrig bleibt

$ /
applications/ dev/          proc/         run/          sys/          tmp/       

Ich habe noch eine aktive SSH-Verbindung zum Server. Ich habe Berufung versucht mv, sudound chmod... direkt aus /applications/minced/bin/oder /applications/minced/usr/bin/, aber nichts funktioniert, obwohl ich sie finden kann dort Weg Auto - Vervollständigung verwenden.

$ /applications/minced/bin/ls
-bash: /applications/minced/bin/ls: No such file or directory

Ich habe Revertieren des Verschiebens des Stammverzeichnisses rekursiv gelesen , aber das Mounten des Systems unter LiveCD ist für mich keine Option, da es sich um einen VPS handelt, nicht um einen physischen Computer. Irgendwelche Ideen?

Aktualisieren

Ich habe herausgefunden, dass dies auf Probleme mit der Bibliotheksverknüpfung zurückzuführen ist, also habe ich dies getan

$ export LD_LIBRARY_PATH=/applications/minced/lib/x86_64-linux-gnu/
$ /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/bin/mv /applications/minced/* /

Offensichtlich bin ich auf Berechtigungsprobleme gestoßen. Das Aufrufen sudomit dem Linker löst diesen Fehler aus

$ /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/usr/bin/sudo ...
sudo: effective uid is not 0, is /applications/minced/usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?

Wie von Barafu Albino vorgeschlagen, habe ich versucht, sumit Busybox ( .../bin/busybox su -) anzurufen , aber es wirft su: must be suid to work properly. Ich denke, das passiert, weil ich sunicht finden kann /etc/passwdund /etc/shadow. Scheint, als hätte ich das System komplett vermasselt.

Eli Korvigo
quelle
Nein, su und sudo sind durcheinander, weil mv wahrscheinlich ihre Berechtigungen gebrochen hat. Sie müssen die suid-Berechtigung für su und sudo zurücksetzen, damit sie funktionieren.
Casey
@casey Ich glaube, es gibt keine Möglichkeit, dies zu tun, ohne überhaupt root zu sein, oder?
Eli Korvigo
Starten Sie eine Live-DVD oder ein Rettungs-Image und reparieren Sie dann Ihr Dateisystem von dort aus.
Casey
@casey Ich habe diesen Ansatz in meiner Frage erwähnt. Ich kann das nicht tun, da die Maschine ein VPS ist.
Eli Korvigo

Antworten:

10

Ihre Anwendungen können nicht ausgeführt werden, da sie Bibliotheken suchen möchten und diese ebenfalls verlegt sind. Versuchen Sie es busyboxdirekt.

bin/busybox ls

sollte funktionieren lsund so weiter.

Barafu Albino
quelle
Ich habe einen ähnlichen Ansatz versucht, indem ich den Linkerpfad exportiert, dh export LD_LIBRARY_PATH=/applications/minced/lib/x86_64-linux-gnu/die Befehle manuell aufgerufen habe /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/bin/mv /applications/minced/* /. Aber ich kann nicht mehr sudo.
Eli Korvigo
Was ist also mit Busybox? Es hat auch sudrin.
Barafu Albino
1
su: must be suid to work properly
Eli Korvigo
Ich habe den Beitrag aktualisiert, um zu zeigen, was passiert.
Eli Korvigo
Ja, diese Option hätte funktioniert, wenn ich noch Root-Rechte hätte. Das nächste Mal werde ich mich als root anmelden, falls dies passiert. Vielen Dank
Eli Korvigo
4

Machen wir einen anderen Ansatz. Ich gehe davon aus, dass Sie kein echtes Root-Passwort kennen. Hier ist eine Liste der Bibliotheken, die sudo benötigt:

linux-vdso.so.1 =>  (0x00007ffea6be9000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fbbad17b000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fbbacf78000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbbacd74000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbbac9aa000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fbbac73d000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbbad5c5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbbac51f000)

Hier ist eine Liste der Dateien im Sudo-Paket (nur relevante):

/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/sudo.service
/usr
/usr/lib
/usr/lib/sudo
/usr/lib/sudo/system_group.so
/usr/lib/sudo/sudo_noexec.so
/usr/lib/sudo/sudoers.so
/usr/lib/sudo/group_file.so
/usr/lib/sudo/sesh
/usr/bin
/usr/bin/sudoreplay
/usr/bin/sudo

Versuchen Sie, Bibliotheken in die Binärdatei in denselben Ordner zu verschieben. Vielleicht wird es funktionieren. suhat weniger Abhängigkeiten, erfordert jedoch die Kenntnis des echten Root-Passworts.

Barafu Albino
quelle
1
sudound suwird nicht laufen, weil sie verloren haben /etc/passwdund /etc/shadow. Vielen Dank für Ihre Hilfe, aber anscheinend habe ich alles zu sehr vermasselt, um damit fertig zu werden.
Eli Korvigo
@ EliKorvigo: Sie haben nichts verloren /etc/. Sie haben das Setuid-Bit verloren, als Sie sie verschoben haben. Sie brauchen das, weil Sie dem Benutzer kein root geben können, wenn Sie zunächst kein root haben.
Kevin
0

Ich bin genau wie in diesem Beitrag auf dieses Problem gestoßen. Ich verwende einen Ubuntu-Server, der einen deaktivierten Root-Benutzer hat und sudodie Root-Befehle ausführt. Daher kann ich mich nicht zufällig mit dem Root-Benutzer anmelden. Der einzige Weg für mich in der Instanz besteht darin, die sudoArbeiten auszuführen. Leider vergingen Stunden, ich habe versagt, das ist schade.

Und für Benutzer, die sich mit dem Root anmelden können, habt ihr wohl vergessen, einen anderen Weg zu erwähnen, der viel einfacher sein könnte: busybox sulogin

Yanyingwang
quelle