GNU/Linux >> Znalost Linux >  >> Cent OS

Centos – Přesunutý koš a další složky! Jak je získat zpět?

Omylem jsem přesunul všechny složky z kořene do podsložky. (/bin , /etc , /home , /lib , /usr … všechny přesunuty) Jediné, které nebyly přesunuty, protože byly používány, jsou /bak , /boot , /dev , /proc , /sys .

Nyní se žádný příkaz, který se pokusím provést, jednoduše nestane. Neustále dostávám „Žádný takový soubor nebo adresář“.

Jsem připojen přes ssh a přes ftp, ale nemohu přesouvat soubory přes ftp, protože přímé přihlášení SU je zakázáno. Mám také přístup ke skutečnému serveru, pokud potřebuji něco udělat přímo odtud.

Předpokládám, že bych potřeboval upravit konfigurační soubor, abych mu řekl, kde najde /bin složku a to by mi pomohlo znovu získat přístup, ale nevím, který soubor by to byl nebo jak to udělat (protože nemůžu ani spustit chmod změnit oprávnění).

Existuje jiný způsob, jak z toho ven, než přeinstalace?

Pracuji na staré verzi CentOS.

Jsem ve světě Linuxu extrémně nový, proto tato akce a otázka…

Přijatá odpověď:

Pokud stále máte root shell, můžete mít šanci opravit váš systém. Řekněme, že jste přesunuli všechny běžné adresáře (/bin , /etc , /lib , /sbin , /usr — to jsou ty, které by mohly ztížit obnovu) pod /oops .

Nebudete moci vydat mv příkaz přímo, i když zadáte úplnou cestu /oops/bin/mv . To proto, že mv je dynamicky propojen; protože jste přesunuli /lib adresář, mv nelze spustit, protože nemůže najít knihovny, které tvoří součást jeho kódu. Ve skutečnosti je to ještě horší:mv nemůže najít dynamický zavaděč /lib/ld-linux.so.2 (název se může lišit v závislosti na vaší architektuře a variantě unixu a adresář může mít jiný název, například /lib32 nebo /lib64 ). Dokud tedy nepřesunete /lib adresář zpět, musíte explicitně vyvolat linker a musíte zadat cestu k přesunutým knihovnám. Zde je příkaz testovaný na Debianu squeeze i386.

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

Možná to budete muset trochu upravit pro jiné distribuce nebo architektury. Například pro CentOS na x86_64:

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

Když jste něco podělali /lib , pomáhá mít staticky propojenou sadu nástrojů. Některé distribuce (nevím o CentOS) poskytují staticky propojenou kopii Busyboxu. K dispozici je také sashe, samostatný shell s mnoha vestavěnými příkazy. Pokud máte jeden z nich, můžete se odtud zotavit. Pokud jste je nenainstalovali dříve, je příliš pozdě.

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

Pokud již nemáte root shell, ale stále vám naslouchá SSH démon a můžete se přihlásit přímo jako root přes ssh a máte jeden z těchto staticky propojených toolboxů, možná budete moci připojit ssh. může fungovat, pokud jste přesunuli /lib a /bin , ale ne /etc .

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

Někteří administrátoři nastaví alternativní účet se staticky propojeným shellem nebo přimějí účet root používat staticky propojený shell, právě pro tento druh problémů.

Související:Oprávnění CentOS pro uživatele FTP – 550 Operace vytvoření adresáře selhala?

Pokud nemáte root shell a neučinili jste preventivní opatření, budete muset zavést systém z živého CD/USB Linuxu (který bude fungovat, pokud bude dostatečně aktuální, aby měl přístup k vašim diskům a souborovým systémům) a přesunout soubory zpět.


Cent OS
  1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 7

  2. Jak nainstalovat Node.js a NPM na CentOS

  3. Přesunutý koš a další složky! Jak je získat zpět?

  1. Jak nainstalovat dig na CentOS 7 a 8

  2. Jak nainstalovat Node.js a NPM na CentOS 7

  3. Jak nainstalovat a nakonfigurovat Redis na CentOS 7

  1. Jak nainstalovat a nakonfigurovat GitLab na CentOS 7

  2. Jak nainstalovat a nakonfigurovat Redmine na CentOS 7

  3. Jak nainstalovat Node.js a npm na CentOS 8