Eu acidentalmente renomeei o diretório /usr
para /usr_bak
.
Eu quero mudá-lo de volta, então adiciono o caminho /usr_bak/bin
para $PATH
permitir que o sistema encontre o comando sudo
.
Mas agora sudo mv /usr_bak /usr
me dá o erro:
sudo: error while loading shared libraries: libsudo_util.so.0: cannot open shared object file: No such file or directory
Existe uma maneira de renomear o /usr_bak
as /usr
além de reinstalar o sistema?
Como você definiu uma senha para root, use
su
ebusybox
, instalado por padrão no Ubuntu. Todassu
as bibliotecas necessárias estão em/lib
. O Busybox é uma coleção de utilitários vinculados estaticamente, portanto, a falta de bibliotecas não deve ser um problema. Fazer:(Embora o próprio Busybox também tenha um
su
applet, o/bin/busybox
binário não é setuid e, portanto, não funciona a menos que seja executado como root.)Se você não tiver uma senha de root,
provavelmente poderá usar a solução de Gilles aqui usando(Gilles diz que isso não funcionará com binários setuid como sudo) reinicie e edite o menu GRUB para inicializarLD_LIBRARY_PATH
, ouinit=/bin/busybox
como um parâmetro do kernel e mova a pasta de volta.Além da resposta de muru :
você poderia ter usado alguma chave USB de inicialização de resgate para reparar seu sistema; por exemplo, se o seu sistema for algum Debian ou Ubuntu, inicialize a chave USB de instalação no modo de recuperação e faça o
mount
emv
eumount
.para ser capaz de reparar mais facilmente tais erros, eu geralmente também instalo um shell estático com vários comandos internos (notavelmente com alguns
cp
,rm
,mv
-like builtins) comosash
(é empacotado no Debian & Ubuntu, e também disponível como sash-3.8. tar.gz no formulário de origem) e inicialize cominit=/bin/sash
passado para o Grub.PS:
sash
tem um pouco de bugs e não é totalmente compatível com Posix, mas ainda é muito útil.Acho que a melhor maneira mais segura é reiniciar usando um sistema operacional inicializado por USB, CD ou DVD (Debian, Ubuntu, Suse, etc). Em seguida, monte a unidade que contém os problemas e faça a renomeação.
Mais seguro do que inicializar em um campo minado com /usr ou /lib efetivamente ausente.
Eu me deparei com um problema semelhante onde renomeei
/usr/bin
para/usr/bin_bkp
para algum teste e não consegui renomear (pois o comando não encontrou osudo
no diretório padrão que é/usr/bin
) e então fui para o/usr/bin_bkp
diretório manualmente (usando o gerenciador de arquivos ) e a maioria das funções (incluindo a renomeação) no botão direito estão desativadas.Então eu tentei o seguinte comando e corrigiu o problema
Invoquei o sudo do caminho atual e funcionou, agora tudo voltou ao normal.
SO: Xubuntu 14.04
Não posso tentar isso agora (e não tenho certeza se gostaria), mas parece que deve funcionar criar um novo "/usr" como um link físico (não um link flexível) para o seu " /usr_bak, em seguida, exclua o "/usr_bak"
O hard link criado por "ln" ( sem argumento "-s") no sistema de arquivos deve tornar os diretórios usr e usr_bak links igualmente válidos para os diretórios em questão. "rm" apenas remove o link que você pediu para remover, não os dois. Como ainda existe um link válido para os conteúdos, eles devem permanecer acessíveis através do link restante em "/usr".