Depois de renomear acidentalmente / usr, como eu renomeio isso de volta?

58

Eu acidentalmente renomei o diretório /usr para /usr_bak .

Eu quero alterá-lo de volta, então eu adiciono o caminho /usr_bak/bin to $PATH para 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 como /usr além de reinstalar o sistema?

    
por Yves 19.03.2018 / 04:17

4 respostas

102

Como você definiu uma senha para root, use su e busybox , instalado por padrão no Ubuntu. Todas as bibliotecas obrigatórias de su estão em /lib . O Busybox é uma coleção de utilitários que estão vinculados estaticamente, então a falta de bibliotecas não deve ser um problema. Faça:

su -c '/bin/busybox mv /usr_bak /usr'

(Embora o próprio Busybox também tenha um applet su , o binário /bin/busybox não é setuid e, portanto, não funciona, a menos que seja executado como root.)

Se você não tem uma senha de root, você provavelmente poderia usar a solução de Gilles aqui usando LD_LIBRARY_PATH , ou (Gilles diz que isso não funcionará com binários setuid como sudo) reinicie e edite o menu GRUB para inicializar com init=/bin/busybox como um parâmetro do kernel e mover a pasta de volta.

    
por 19.03.2018 / 04:35
30

Além da resposta do muru :

  • você poderia ter usado uma chave USB de inicialização de recuperação 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 os mount e mv e umount .

  • apropriados.
  • para consertar mais facilmente esses erros, geralmente também instalei um shell estático com vários comandos incorporados (especialmente com alguns cp , rm , mv -como internos) como sash empacotado no Debian e Ubuntu, e também disponível como sash- 3.8.tar.gz na forma de código-fonte) e inicialize com init=/bin/sash passado para o Grub.

PS: sash tem pouco bugs e não é totalmente compatível com Posix, mas ainda é muito útil.

    
por 19.03.2018 / 12:27
2

Acho que a melhor maneira é reiniciar usando um sistema operacional USB, CD ou DVD inicializado (Debian, Ubuntu, Suse, etc). Em seguida, monte a unidade que contém os problemas e faça a renomeação.

Mais seguro do que iniciar em um campo minado com / usr ou / lib efetivamente ausentes.

    
por 21.03.2018 / 05:16
-3

Eu não posso tentar isso agora (e não tenho certeza se eu gostaria), mas parece que deve trabalhar para criar um novo "/ usr" como um < href="https://unix.stackexchange.com/questions/50179/what-happens-when-you-delete-a-hard-link?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa"> link físico (não um link suave) para o seu "/ usr_bak, em seguida, exclua o" / usr_bak "

ln /usr_bak /usr
rm /usr_bak

O link físico criado pelo argumento "ln" (com não "-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 o conteúdo, eles devem permanecer acessíveis através do link restante em "/ usr".

    
por 20.03.2018 / 21:08

Tags