O SO é Centos 6.5 de 64 bits
Eu baixei um arquivo tar e queria descompactá- mv
lo.
Descompactei e, acidentalmente (como root), executei em mv folder/* /*
vez do mv folder/* .
bash, disse que não podia sobrescrever alguns arquivos e pedi permissão para outros. Ctrl-c fora.
Deixei a sessão do terminal aberta, mas saí su
.
Agora eu perdi o acesso à maioria dos shell
comandos, não consigo ls
nenhum diretório e não consigo voltar su
.
O servidor da web e os serviços ainda parecem estar em execução. Eu posso correr muito poucos comandos, cd
é um deles e quando tento cd
para /etc
ou /bin
ele erros com no directory found
.
EDIT Só notei todas as pastas que faltam /
( bin
, etc
, lib64
, root
, sbin
) foram transferidos para /var
diretório, eu tentei /var/bin/su
e obter:
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
/var/bin/su
diretamente?/var/bin/su: user root does not exist
Eu acho que nós determinamos que não pode ser feito porque / etc é em / var / etcRespostas:
Se o seu sistema estiver
busybox
instalado, você poderá usá-lo para devolver as coisas.busybox
é um binário com muitos utilitários padrão embutidos nele. As coisas tais comomv
,sh
,ls
, etc.Do seu comentário sobre a resposta de Pavel, parece que tudo acabou
/var
. Você pode tentar fazer/var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
. Isso deve tornar a maior parte do seu sistema operacional novamente. Existem alguns diretórios, como os/tmp
que também existem/var/tmp
, então você não pode simplesmente movê-los. Espero que tenham sido os quemv
reclamaram e foram deixados em paz.Obtendo um shell raiz
Você também mencionou que perdeu o shell raiz e isso
su
está causando umld-linux
erro de biblioteca. Você pode usar o seguinte:Nota: Ao tentar isso, ele não funciona. Isso ocorre porque
su
requer vários arquivos/etc
(passwd
,pam.d
e outros). Se/etc
ainda estivesse intacto, isso teria uma boa chance de sucesso.Sem ocupado
Se você não tiver o busybox disponível, poderá usar o mesmo truque do ld-linux como para
su
:De um CD ao vivo
Como discutido nos comentários, se você perdeu o shell raiz, está praticamente travado. Basicamente, para corrigir isso, você precisa de privilégios de root. A única maneira de chegar lá é ter um utilitário como
su
ousudo
aumentar suas permissões (que não são funcionais neste momento) ou seqüestrar outro programa que já esteja sendo executado como root (dependendo do que está sendo executado, provavelmente não é possível).Isso deixa a única opção de ser um CD ao vivo. Depois de inicializado em um CD ao vivo (ou USB ao vivo, ou qualquer outra coisa), basta montar o volume raiz e mover os diretórios afetados de
/var
volta à sua casa original/
.Sinopse do que aconteceu
folder/*
teria expandido para algo comofolder/foo
efolder/bar
./*
teria expandido para algo como/bin
/lib32
/lib64
/etc
/home
/root
/var
. Observando que/var
é o último item.Portanto, quando o shell expandisse todos esses globs, ele teria algo assim:
Como
/var
é o último item da lista, tudo foi movido para ele.Por que
/var/bin/su
erros com/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Quase todos os binários no linux estão dinamicamente vinculados
ld-linux
.ld-linux
é a biblioteca responsável por carregar as outras bibliotecas necessárias por um binário. No seu sistema, isso mora em/lib64/ld-linux-x86-64.so.2
. Desde que este diretório foi movido, qualquer executável vinculado dinamicamente não funcionará mais.O motivo pelo qual o busybox funciona é que o busybox está vinculado estaticamente. Não usa
ld-linux
.fonte
busybox
Parece que a solução perfeita, infelizmente não instalada, será corrigida ... Enquanto isso, existe alguma maneira de corrigir o caminho dos comandos a serem executados em/var/lib64/ld-linux-x86-64.so.2
vez de/lib64/ld-linux-x86-64.so.2
? Este parece ser o que está matando os comandos/var/bin
/etc
que não estão lá (/etc/passwd
,/etc/nsswitch
,/etc/pam.d
, e provavelmente mais). Parasu
trabalhar,/etc
deve estar de volta em seu local original. A menos que você tem um shell de root, que ao redor, eu acho que você está preso :-(mv folder/* ./*
está errado também. Você deve ter mais cuidado com a semântica dos comandos executados. Omv
comando com mais de dois argumentos apenas pega todos os argumentos, exceto o último, e move os caminhos para os quais eles apontam para o diretório especificado no último argumento.Para mover todos os diretórios (exceto os ocultos) da pasta para o diretório atual, você deve usar:
Você quebrou o sistema em execução. Seus comandos shell e builtin continuam funcionando. Você precisará inicializar um CD ao vivo e mover os diretórios de volta. Eu não estou ciente de um bash embutido para mover / renomear arquivos que permitiriam corrigir a situação sem reiniciar, consulte a resposta de Patrick para obter mais detalhes.
fonte
mv
ter sido o meu comando para mover todos os arquivos e pastas da pasta para o diretório atual?/
e/var
podem estar em partições diferentes; nesse caso, você precisa montar os dois.Mudei acidentalmente / usr para / usr_old e tudo deu errado. Felizmente, fiquei no prompt e consegui executar o seguinte comando para restaurar a pasta usr:
fonte
IMPORTANTE Se você está aqui e executou
mv
incorretamente, não pode executarshell
comandos e pastas ausentes no diretório raiz (/
), primeiro, se tiverSU
, NÃO saiaSU
até que seja corrigido, porque você não o recuperará. Se você estiver conectado remotamente, se desconectar, não poderássh
deixar o servidor em paz, nãoreboot
- a maioria dos serviços em execução deve estar OK. Você pode tentar uma das muitas soluções sugeridas por Patrick ... no entanto, você provavelmente precisará de acesso físico se errar como eu.Uma vez na frente da máquina, eu a reinicializei. Como esperado, recebi um pânico no kernel.
Eu pensei que isso seria uma correção muito fácil, insira o livecd, entre no modo de recuperação ATÉ ESTE PONTO FOI FÁCIL - então eu tive que tentar montar meu diretório raiz. No entanto, eu precisava mais do que apenas um simples comando de montagem.
Isso porque eu, como muitas pessoas, tinha um sistema de arquivos lvm, e essa foi a primeira vez que tive que lidar com um resgate como esse. Eu tive que pesquisar na web para ver o que precisava fazer. Eu consolidei essas informações para este post. Aqui foi o meu processo para corrigir o meu problema.
1) Centos_6.4_min cd inserido
2) A interface GUI perguntou o que eu queria fazer, escolheu o Rescue
3) O Rescue tentou montar o sistema atual, mas indicou que eu não tinha partições Linux
4) Escolheu entrar
shell
quando a opção foi dadaNeste ponto, tentei muitas coisas para montar o sistema, sem sorte, tenho certeza de que estas são todas as etapas que eu tive que executar (por causa do lvm):
5) Digitalizei meus volumes,
lvmdiskscan
6) Ran lvscan, mostrou todos listados como "inativos"
lvscan
7) carregar o módulo do dispositivo
modprobe dm-mod
8) altere os volumes existentes para ativos
vgchange -ay
9) Funcionou
lvscan
novamente, agora todos os itens listados como "ativos"10) Ponto de montagem criado e montagem da partição lógica
mkdir /mnt/root
mount /dev/VolGroup00/LogVol00 /mnt/root
11) Pastas movidas de volta (você pode precisar de outras pessoas):
mv /var/{bin,etc,lib64,mnt,root,sbin} /
12)
reboot
13) SUCESSO!
fonte