Como faço para corrigir um arquivo /etc/sudoers inválido se o acesso root estiver desabilitado?

Como faço para corrigir um arquivo /etc/sudoers inválido se o acesso root estiver desabilitado?

Isso se refere ao meu Raspberry Pi, no qual tenho o Raspbmc instalado. Sei que existe um site Raspberry Pi StackExchange, mas achei que poderia dar mais atenção a esse problema aqui.

O problema é que eu modifiquei /etc/sudoersna tentativa de conceder NOPASSWDpermissões a um dos usuários, mas acho que em algum lugar ao longo do caminho eu criei o arquivo e agora estou recebendo o seguinte erro sempre que faço login/tento usar sudo:

sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Encontrei postagens semelhantes emUbuntuassim comoStackOverflow, mas o problema é que todas as respostas exigem uma senha root, e oa conta root está desabilitada por padrão no Raspbmc, e obviamente não o habilitei antes de tentar alterar /etc/sudoers.

Então, minha pergunta é: como faço para corrigir o arquivo se não tiver o acesso root habilitado? É mesmo possível?

Responder1

Você ainda deve conseguir inicializar o Pi no modo de usuário único para obter acesso ao root.

Usando outro computador, modifique cmdline.txte adicione singleao final da linha.
Então, quando você inicializar o Pi a partir do cartão SD, ele deverá despejá-lo automaticamente em um prompt de root que permitirá que você atualize/etc/sudoers

Responder2

Depois de dois dias de pesquisa e navegação na web finalmente encontrei uma solução e consegui salvar meu próprio sistema Raspberry Pi (sem precisar reformatar o cartão SD e começar do zero)!

OBSERVAÇÃO:Esta resposta é bem longa. Se você quiser chegar rapidamente à solução real, adicionei um cabeçalho que você pode rolar para baixo. Eu recomendo que você leia a resposta completa, pois ela pode trazer alguns insights sobre as diferenças entre a distribuição Raspbian e outras distribuições Linux, bem como esclarecer por que muitas das soluções sugeridas que você encontra na Internet podem não funcionar no seu Pi .

Então, normalmente, em um ambiente Linux, a maneira mais rápida de reparar o sudo quebrado sem precisar reinicializar é usando o PolicyKit ou o pkexec-command como este:

pkexec visudo

Mas no Pi provavelmente não funcionará, ele pedirá a senha do root, mas nenhuma senha será aceita. (Quero dizer, você ao menos se lembra de definir uma senha de root? Espere, você se lembra? Em seguida, pule para o asterisco *.)

Algumas distribuições Linux, por exemplo Ubuntu, vêm com um modo de recuperação que pode ser acessado mantendo pressionada a tecla shift durante a inicialização e oferece uma interface amigável e permite que você seja colocado em um prompt de shell root onde pode obter acesso a consertar os arquivos quebrados. A distribuição Raspbian Linux do Pi não vem com esse tipo de modo de recuperação, então essa solução não é uma solução para nós. No entanto, o Pi solicita na inicialização que você mantenha pressionada a tecla shift para entrar em algum tipo de modo de recuperação e, ao entrar no modo de recuperação do Pi ou na caixa de diálogo NOOBS, estamos certamente no caminho certo para reparar o sudo quebrado em nosso Pi.

Outra maneira comum de reparar o sudo é inicializando no modo de usuário único, que leva você a um prompt do shell de root. A maneira de fazer isso é adicionando a palavra singleao final do cmdline.txt-file na partição de inicialização do sistema. Na próxima vez que o sistema for inicializado, ele será inicializado no modo de usuário único.

Podemos facilmente tentar esta solução em nosso Pi porque, convenientemente, o modo de recuperação do Pi ou a caixa de diálogo NOOBS nos permite editar o cmdline.txtarquivo. No modo de recuperação ou na caixa de diálogo NOOBS, pressionando o ícone "Editar configuração" você abre um editor que permite editar dois arquivos, um dos quais é cmdline.txt. Ao pressionar "OK" no editor, suas alterações serão salvas.

Infelizmente, ao inicializar no modo de usuário único ou “modo de resgate” no Pi, você provavelmente receberá a seguinte mensagem:

Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.

Press Enter to continue.

Isso – e também o motivo pelo qual o prompt de senha root mencionado anteriormente não aceitava nenhuma senha – ocorre porque o Raspbian, por padrão, não tem senha definida para a conta root. Isso não deve ser confundido com uma senha que não é nada ou que nenhuma senha seria necessária. O Raspbian, assim como algumas outras distribuições Linux (por exemplo, o Debian, do qual o Raspbian é um derivado), espera que o usuário opere como root através do sudo e não através da própria conta. Portanto, a conta root está no estado de “bloqueio” que estamos enfrentando.

*Se você mesmo definir a senha de root, por exemplo, por meio do comando sudo passwd root, você poderá usar o pkexec-command e inicializar no modo de usuário único. Observe que quando você faz isso, você precisa usar o sudo, então isso obviamente não é uma solução uma vez que o sudo está quebrado, mas eu aponto isso porque é provavelmente por isso que algumas pessoas tiveram sucesso em consertar seus Pi ao aplicar as soluções que sugerem o pkexec- comando ou modo de usuário único. Em algum momento, essas pessoas definiram manualmente uma senha de root, desbloqueando a conta root do sistema.

A solução

Esta postagem do blogexplica como fazer o que precisamos fazer. As etapas são quase idênticas às que executamos ao tentar reparar o sudo no modo de usuário único. Você não precisa fazer todas as coisas complicadas mencionadas na postagem do blog para editar o cmdline.txtarquivo -, basta fazê-lo na caixa de diálogo NOOBS. A chave é adicionar init=/bin/shao final do cmdline.txtarquivo. Com esse trecho adicionado, na próxima vez que você inicializar seu Pi, você será levado a um prompt de shell de root.

Inicialmente, o sistema de arquivos será carregado em modo somente leitura, portanto, antes de poder editar qualquer coisa, você terá que remontar a partição raiz em modo leitura e gravação executando o seguinte comando:

mount -o remount,rw /dev/mmcblk0p2 /

Agora você deve estar em um prompt do shell root, onde poderá editar livremente qualquer arquivo, incluindo os arquivos sudo quebrados.

Responder3

A solução mais fácil é inicializar outro sistema operacional em um LiveDVD ou LiveUSB (de preferência um LiveUSB e, de preferência, um sistema operacional Linux), montar o disco e alterar manualmente o arquivo. Já fiz coisas semelhantes antes e consertei dessa maneira. Todos os seus arquivos ficarão visíveis e editáveis ​​no sistema Live. A menos que você tenha criptografado a unidade; isso torna as coisas um pouco mais complicadas.

Deixe-me saber se você tiver dúvidas e eu editarei esta resposta - não tenho certeza de quão confortável você se sentiria ao configurar um USB ativo, mas não é muito difícil.

informação relacionada