GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Centos – Moved Bin und andere Ordner! Wie bekomme ich sie zurück?

Ich habe versehentlich alle Ordner vom Stammverzeichnis in einen Unterordner verschoben. (/bin , /etc , /home , /lib , /usr … alle verschoben) Die einzigen, die nicht verschoben wurden, da sie verwendet wurden, sind /bak , /boot , /dev , /proc , /sys .

Jetzt wird jeder Befehl, den ich auszuführen versuche, einfach nicht ausgeführt. Ich erhalte ständig „Keine solche Datei oder kein solches Verzeichnis“.

Ich bin über ssh und über ftp verbunden, aber ich kann keine Dateien über ftp verschieben, da die direkte SU-Anmeldung deaktiviert ist. Ich habe auch Zugriff auf den eigentlichen Server, wenn ich etwas direkt von dort aus erledigen muss.

Ich gehe davon aus, dass ich eine Konfigurationsdatei bearbeiten müsste, um ihr mitzuteilen, wo sich /bin befindet Ordner und das würde mir helfen, wieder Zugriff zu bekommen, aber ich weiß nicht, welche Datei das wäre oder wie ich das machen soll (da ich nicht einmal chmod ausführen kann Berechtigungen ändern).

Gibt es einen anderen Ausweg als eine Neuinstallation?

Ich arbeite an einer alten Version von CentOS.

Ich bin absolut neu in der Welt von Linux, daher diese Aktion und die Frage…

Akzeptierte Antwort:

Wenn Sie noch eine Root-Shell haben, haben Sie möglicherweise die Möglichkeit, Ihr System zu reparieren. Angenommen, Sie haben alle gängigen Verzeichnisse verschoben (/bin , /etc , /lib , /sbin , /usr – das sind diejenigen, die die Wiederherstellung erschweren könnten) unter /oops .

Sie können den mv nicht ausgeben Befehl direkt, auch wenn Sie den vollständigen Pfad /oops/bin/mv angeben . Das liegt daran, dass mv ist dynamisch verknüpft; weil Sie die Datei /lib verschoben haben Verzeichnis, mv kann nicht ausgeführt werden, da es die Bibliotheken, die einen Teil seines Codes darstellen, nicht finden kann. Tatsächlich ist es sogar noch schlimmer:mv kann den dynamischen Loader /lib/ld-linux.so.2 nicht finden (Der Name kann je nach Architektur und Unix-Variante variieren, und das Verzeichnis könnte einen anderen Namen haben, z. B. /lib32 oder /lib64 ). Daher, bis Sie die Datei /lib verschoben haben Verzeichnis zurück, müssen Sie den Linker explizit aufrufen und den Pfad zu den verschobenen Bibliotheken angeben. Hier ist der Befehl, der auf Debian Squeeze i386 getestet wurde.

export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /

Möglicherweise müssen Sie dies für andere Distributionen oder Architekturen ein wenig anpassen. Zum Beispiel für CentOS auf x86_64:

export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /

Wenn Sie etwas vermasselt haben /lib , hilft es, eine statisch verlinkte Toolbox herumliegen zu haben. Einige Distributionen (ich weiß nichts über CentOS) bieten eine statisch verknüpfte Kopie von Busybox. Es gibt auch Sash, eine eigenständige Shell mit vielen integrierten Befehlen. Wenn Sie eines davon haben, können Sie Ihre Wiederherstellung von dort aus durchführen. Wenn Sie sie nicht vorher installiert haben, ist es zu spät.

# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit

Wenn Sie keine Root-Shell mehr haben, aber immer noch einen SSH-Daemon, der zuhört, und Sie sich direkt als Root über ssh anmelden können, und Sie eine dieser statisch verknüpften Toolboxen haben, können Sie sich möglicherweise per ssh anmelden. Dies kann funktionieren, wenn Sie /lib verschoben haben und /bin , aber nicht /etc .

ssh [email protected] /oops/bin/sash
[email protected]'s password:
Stand-alone shell (version 3.7)
> -mv /oops/* /

Einige Administratoren richten für diese Art von Problemen ein alternatives Konto mit einer statisch verknüpften Shell ein oder lassen das Root-Konto eine statisch verknüpfte Shell verwenden.

Verwandt:CentOS-Berechtigungen für FTP-Benutzer – 550 Vorgang zum Erstellen des Verzeichnisses fehlgeschlagen?

Wenn Sie keine Root-Shell haben und keine Vorkehrungen getroffen haben, müssen Sie von einer Linux-Live-CD/USB booten (jede ist ausreichend, solange sie neu genug ist, um auf Ihre Festplatten und Dateisysteme zugreifen zu können) und verschieben Sie die Dateien zurück.


Cent OS
  1. So installieren und konfigurieren Sie Nginx unter CentOS 7

  2. So installieren Sie dig unter CentOS 7 und 8

  3. So installieren Sie Node.js und NPM unter CentOS 7

  4. So installieren Sie Node.js und NPM unter CentOS

  5. Bin und andere Ordner verschoben! Wie bekomme ich sie zurück?

So installieren Sie PowerDNS und Poweradmin unter CentOS 7

So installieren und konfigurieren Sie GitLab CE unter CentOS 7

So installieren und konfigurieren Sie Zabbix unter CentOS 7

So installieren und konfigurieren Sie GitLab CE unter CentOS 8

So installieren und konfigurieren Sie Nagios 4.0.7 unter CentOS 7

So installieren und konfigurieren Sie GlusterFS unter CentOS 7/CentOS 8