
Eu acidentalmente cometi um erro no sudoers
arquivo e agora não consigo consertar porque se eu tentar alterar o arquivo ele dá uma mensagem de permissão negada. Se eu usar sudo
para abrir o arquivo, ele indicará erro de sintaxe e nenhuma sudoers
fonte válida encontrada e não executará o comando. Estou no raspbian, um sabor do debian.
Alguém sabe como sair desse beco sem saída?
Responder1
- Se você souber a
root
senha (e ela estiver definida), poderá usá-lasu
para criarroot
e editar arquivos/etc/sudoers
. - Se o seu sistema de arquivos raiz estiver em um cartão SD, você poderá enviá-lo e editá-lo
/etc/sudoers
no PC ou em qualquer outro dispositivo, desde que tenha leitor de cartão. - Você pode entrar na linha de comando do U-Boot (bootloader) (geralmente pressionando um botão no teclado ou via UART) e adicionar
1
à linha de comando do kernel Linux para entrar no modo de usuário único. Neste modo você poderároot
e poderá editar arquivos/etc/sudoers
. Veja tambémesse.
Responder2
Você terá que inicializar no modo de usuário único.
https://serverfault.com/questions/482079/debian-boot-to-single-user-mode
Como usuário root, você poderá editar o arquivo sudoers para corrigi-lo. Eu recomendo fortemente usar o visudo
comando para editar seu arquivo sudoers no futuro, para evitar ter que passar por isso novamente, já que o visudo faz uma verificação de sintaxe no arquivo antes de salvá-lo.
Responder3
Se você estiver em uma instância de nuvem, terá mais problemas.
Existem técnicas dependendo da distribuição, mas se você já tiver o Docker instalado e em execução, geralmente poderá usar um contêiner do Docker para corrigir o problema. Isso ocorre porque, normalmente, o serviço Docker está sendo executado como root e qualquer coisa feita em um volume montado dentro do contêiner é afetada como root no host.
No anfitrião:
docker run --rm -ti -v /etc:/usr/local/etc busybox sh
O "busybox" é apenas uma pequena distro agradável que não demora muito para ser baixada. Se você já possui uma imagem Docker que possui um shell disponível, basta usá-la.
No contêiner Docker:
cd /usr/local/etc
vi sudoers
Você pode ter adicionado um arquivo inválido ao /etc/sudoers.d/
diretório. Nesse caso, provavelmente apenas remova esse arquivo.
Ao sair do contêiner, você pode fazer sudo
isso novamente.
Uau!