Após renomear acidentalmente / etc, como renomeá-lo novamente?

36

Estou usando o Ubuntu 18.04.

Renomeei a /etcpasta para apache2. Esse foi o meu maior erro

Agora não consigo renomeá-lo porque preciso usar sudo, mas quando tento recebo o erro

sudo: unknown uid 1000

Como posso resolver este problema? Eu não tenho um sistema ativo para inicializar e, no modo de recuperação, o terminal raiz é aberto, mas depois fecha cannot open password database.

Guaxinim
fonte
17
Inicialize a partir de uma mídia de instalação, selecione "Experimente o Ubuntu", monte seu sistema de arquivos raiz /mnt, renomeie e reinicie.
AlexP
Como inicializar uma mídia de instalação?
Racoon
@ Zanna, o turno não me mostrou nenhum menu. Talvez outro botão possa abri-lo?
Racoon
@Zanna, menu de recuperação -> root abre terminal, mas ele diz que não é possível abrir banco de dados e fecha senha
Racoon
@Zanna, não, não :(
Racoon

Respostas:

62

Uma maneira fácil de corrigir problemas como esse geralmente é inicializar a partir de um sistema ativo, montar a partição raiz /mnt e renomear o arquivo.

Se você não possui um sistema ativo ou um meio de criar um, ou não possui acesso físico ao sistema, mas pode reiniciar e obter o menu GRUB, pode usar o editor GRUB para obter um shell raiz e renomear o arquivo.

Reinicialize ou desligue, ligue e, se você normalmente não vê o menu GRUB na inicialização, pressione Shiftou Escpara acessar o menu GRUB.

Mova o cursor para baixo em Opções avançadas para Ubuntu e pressione e enter, em seguida, pressione epara editar as opções de inicialização (apenas uma vez - as alterações aqui não serão permanentes, portanto, não precisamos limpar depois).

Você verá uma tela parecida com esta 1 :

captura de tela do editor de menu do GRUB

Mova o cursor para baixo até a linha que começa linuxe, em seguida, mova o cursor para o final dessa linha ou para qualquer lugar entre os parâmetros de inicialização do kernel. Verifique se você está na linha correta e digite com cuidado aqui, pois o sistema pode falhar ao inicializar sem estar /etcno lugar.

Adicione o texto init=/bin/bashe pressione F10para inicializar.

Isso iniciará o sistema com um shell Bash como init. Você receberá um shell raiz e o sistema de arquivos será montado somente para leitura. 2 Para tornar o sistema de arquivos gravável, digite o comando

mount -o remount,rw /

Agora você pode renomear /etc(você pode querer lsprimeiro)

mv /apache2 /etc

Agora você pode reiniciar ou concluir a inicialização normalmente daqui, solicitando que o shell raiz se substitua pelo sistema init normal 3 :

exec systemd 

Eu testei este procedimento no Ubuntu MATE 18.04.


1 Muito obrigado ao Kulfy por obter uma captura de tela de boa qualidade do editor GRUB do VirtualBox!
2 Embora PATH não possa ser definido a partir dos arquivos de configuração /etcneste cenário, o Bash definirá automaticamente um .
3 Se exec systemdnão funcionar para você, exec /sbin/initfaça o truque. Caso contrário, readlink -e /sbin/initdeve fornecer o caminho para qualquer programa init que esteja em execução, o que você pode fazer execcom o caminho completo. Se você não puder continuar dessa maneira, basta entrar reboot.

Zanna
fonte
4
Muito completo, incluindo a captura de tela +1 :)
WinEunuuchs2Unix
3
@ Kulfy muito obrigado! isso é maravilhoso: o DI não pode usar o VB, pois não tenho RAM suficiente. Muito gentil de sua parte para ajudar a melhorar a minha resposta
Zanna
3
Eu acho que tirei a captura de tela muito grande: P ;-) e obrigado pelos créditos da captura de tela :) #
Kulfy
11
@Racoon Você está muito bem-vindo, feliz você tem que fixa :)
Zanna
Tentando testá-lo, mas não está funcionando no Ubuntu 18.04.Desktop. Seguiu as instruções literalmente . Não está funcionando. Depois de F10apenas algumas linhas aparecerem e param na tela em branco. Você pode sugerir alguma coisa?
Vijay
8

Se você possui um USB ativo, poderá inicializá-lo e montar seu sistema de arquivos existente e renomeá-lo a /etcpartir daí. Aqui está um tutorial sobre como criar um USB ativo, se necessário.

Uma vez inicializado no USB ativo (se estiver usando uma unidade Ubuntu 18.04), selecione "Experimente o Ubuntu sem instalar" e, essencialmente, fornecerá uma instância completa de uma instalação do Ubuntu que não persistirá após o desligamento. Depois de inicializado, você tem algumas opções:

Maneira da linha de comando

Abra um terminal e corra lsblk. Procure o volume que seria a unidade da sua instalação original e observe qual é o número (/ dev / sd #)

Em seguida, crie um ponto de montagem para a unidade com mkdir -p /mnt/directorye monte a unidade com sudo mount /dev/sd# /mnt/directory. Navegue para o diretório com cd /mnt/directorye agora você deve estar no diretório raiz da instalação, mas agora com um sudocomando de trabalho . execute sudo mv apache2 etce reinicie no seu sistema operacional hipoteticamente funcional.

Maneira gráfica

Abra o utilitário de discos procurando por Discos. Selecione o volume que se parece com sua unidade de instalação e monte-a. Abra o gerenciador de arquivos e selecione o volume montado, clique com o botão direito do mouse na sua /apache2pasta, renomeie-a e /etc, em seguida, reinicie.

Minty
fonte
"Caminho gráfico" não funciona porque não há opção "Renomear" na RT. clique.
Vijay
11
@Vijay Provavelmente, por causa das permissões de arquivo, você precisará abrir o gerenciador de arquivos como root para fazê-lo graficamente. Para fazer isso, execute o comando sudo nautilusno terminal. (O Ubuntu usa o "nautilus" como seu gerenciador de arquivos da mesma maneira que o Windows usa o "explorer".)
AJMansfield
2
O @AJMansfield, é claro, não importa em um sistema ativo, mas geralmente devemos sudo -H nautilusevitar que o root se torne o proprietário dos arquivos de configuração $HOME, potencialmente tornando-os inacessíveis pelos programas executados como um usuário comum. Você provavelmente está ciente disso, mas estou mencionando outros leitores.
Zanna
6
  1. Faça o USB inicializável, como mostrado aqui.

  2. Inicialize a partir do USB pressionando a tecla conforme mostrado aqui.

  3. Descubra sua partição do sistema de arquivos executando gparted. Suponha que seja sdxy.

  4. Executar no terminal sudo mount /dev/sdxy /mnt

  5. Executar no terminal sudo mv /mnt/apache2 /mnt/etc

  6. Verifique seu sistema de arquivos em / mnt para a alteração de nome.

  7. Executar no terminal sudo reboot

  8. Quando solicitado, remova o USB e pressione enter

Vijay
fonte
@ Kulfy eu tentei, mas ele não funciona sem o sudo. Veja aqui .
Vijay
Isso ocorre porque o sda2 foi montado com o sudo, portanto, apenas o sudo pode executar ações. Mas se você montar o drive pelo nautilus (sem nenhuma permissão especial), poderá executar tarefas sem o sudo.
Kulfy
Verifiquei isso `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: somente o root pode fazer isso ubuntu @ ubuntu: ~ $ #
596 Vijay
11
AFAIK, o mountprograma é muito rigoroso e sempre deve ser executado como root; a única exceção é quando o sistema de arquivos está dentro fstabe tem a useropção O programa udisksctlpermite que usuários normais montem dispositivos usando, por exemplo udisksctl mount -b /dev/sda1(ele cria um ponto de montagem adequado /media/$USER/). Eu não tentei usar udisksctla partir de um sistema ao vivo, mas em um sistema vivo é sempre um usuário privilegiado capaz de executar sudosem senha por isso não há necessidade de utilitários como o udisksctlque são de outra maneira tão útil
Zanna