Como edito um arquivo sudoers inválido? Ele lança o erro abaixo e não está me permitindo editar novamente para corrigi-lo.
Aqui está o que acontece:
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
Respostas:
Em um sistema Ubuntu moderno (e em muitas outras distribuições GNU / Linux), a correção de um
sudoers
arquivo corrompido é realmente muito fácil e não requer reinicialização, usando um CD ao vivo ou acesso físico à máquina.Para fazer isso via SSH, faça o login para a máquina e executar o comando
pkexec visudo
. Se você tiver acesso físico à máquina, o SSH é desnecessário; basta abrir uma janela do Terminal e executar essepkexec
comando.Supondo que você (ou algum outro usuário) esteja autorizado a executar programas como
root
no PolicyKit, você pode digitar sua senha e, em seguida, será executadavisudo
comoroot
, e você poderá consertá-la/etc/sudoers
.Se você precisar editar um dos arquivos de configuração em
/etc/sudoers.d
(que é incomum nessa situação, mas possível), use .pkexec visudo -f /etc/sudoers.d/filename
Se você tiver uma situação relacionada em que precisará executar comandos adicionais de administração do sistema como raiz para corrigir o problema (também incomum nessa circunstância, mas comum em outras), poderá iniciar um shell raiz interativo
pkexec bash
. De um modo geral, qualquer comando não gráfico com o qual você executousudo
pode ser executadopkexec
.(Se houver mais de uma conta de usuário no sistema autorizada a executar programas como
root
no PolicyKit, em seguida, para qualquer uma dessas ações, você será solicitado a selecionar qual delas deseja usar antes de ser solicitada sua senha.)Se isso não funcionar - por exemplo, se não houver usuários autorizados a executar programas como root via PolicyKit -, inicialize a partir de um CD ao vivo do Ubuntu (como o CD que você provavelmente usou para instalar o Ubuntu) e monte o sistema de arquivos para o sistema instalado. Você pode fazer isso executando
sudo parted -l
para visualizar suas partições - provavelmente existe apenas uma partição ext4, e esse é o sistema de arquivos raiz.Suponha que o sistema de arquivos raiz do sistema Ubuntu instalado esteja em / dev / sda1. Então você pode montá-lo com
sudo mount /dev/sda1 /mnt
. Em seguida, você pode editar o arquivo sudoers do sistema instalado comsudo nano -w /mnt/etc/sudoers
. Ou, melhor ainda, você pode editá-lo com(o que impedirá que você salve um arquivo sudoers com sintaxe incorreta).
fonte
#include
diretivas nossudoers
arquivos são tratadas especialmente; o líder#
não faz com que o restante da linha seja interpretado como um comentário, nesse caso. Comoman sudoers
diz: "O sinal de cerquilha ('#') é usado para indicar um comentário (a menos que faça parte de uma diretiva #include ou a menos que ...") Veja também visudo: #includedir sudoers.d (arquivado em lzone.de/ blogue ).pkexec visudo
solicita uma senha, que não aceita a senha correta. Emite um erro "FALHA NA AUTENTICAÇÃO".Sempre use
visudo
para editar seu arquivo sudoers, nunca o edite diretamente. Isso impedirá que você o salve no disco, a menos que valide.fonte
Digitar:
Então mude a última linha
Para:
Isso deve resolver seu problema.
fonte
#
de#includedir
causa causa erros de sintaxe, isso#
faz parte da diretiva, pelo menos no Ubuntu 12.10.se alguém como eu não tiver o pkexec instalado ou não puder executar o vi, visudo, nano ou qualquer outro editor para alterar o arquivo sudoers, você pode ter certeza com este processo .. Fui salvo com isso:
remontar o dispositivo de inicialização para rw e aplicar o direito de execução ao usuário e editar o arquivo
corrija esse erro e seja feliz :)
fonte
visudo
em veznano /etc/sudoers
.Se você estragou seu
sudoers
arquivo, precisará:visudo
, corrija seu arquivofonte: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
fonte
Não há nada errado #include sudoer.d remover #include sudoer.d não fará nenhuma diferença.
Mas verifique se você não possui nenhum erro de sintaxe. Eu tive o mesmo problema, mas gastei horas para corrigir e apenas descobri que são erros de sintaxe. Consulte o manual e corrija-os.
Por exemplo, digamos que seu nome de usuário seja: dolly, usei o seguinte que está errado
sintaxe correta é
ou
espero que isto ajude
fonte
visudo
ao editar esses arquivos, o que garante que você não tenha erros de sintaxe antes de modificar o arquivo.visudo
não é apenas para edição/etc/sudoers
- ele também cria e edita arquivos no/etc/sudoers.d
. Também funcionará com o editor de texto que você desejar. Veja a página de manual para detalhes.thunderbird
, que nunca deve ser executado como root de qualquer maneira) dará efetivamente ao usuário acesso total ao sistema quando executado como root. Até uma funcionalidade aparentemente simples abre a porta para acesso root completo. Por exemplo, um usuário que pode executar um programa que pode salvar um arquivo em um local arbitrário como root pode obter acesso root completo (eles podem instalar seus próprios/etc/sudoers
ou, se as limitações de sintaxe impedirem, eles podem instalar seus próprios/etc/crontab
).execute o modo de recuperação e digite este
somente o grupo e a raiz do usuário devem ter lido o privilégio
fonte
Você também pode fazer login como root em um
tty
console com Ctrl+ Fn( Fnde 1 a 6) e executarvisudo
.fonte
Você também pode editar sua entrada de inicialização no grub.
Simplesmente reinicie o seu PC e aguarde o grub aparecer. Em seguida, pressione "e" na entrada "Ubuntu" para editá-lo.
Procure uma linha com "linux =" ou "kernel =" e simplesmente adicione uma "única" ao final dessa linha.
Em seguida, pressione F10 para inicializar esta entrada de inicialização modificada temporariamente. Isso fornecerá um shell (sem GUI) com direitos de root e você poderá editar o arquivo sudoers com s.th. como nano / etc / sudoers de volta ao seu estado anterior.
Em seguida, reinicie e pronto.
fonte
então reverta seus erros
fonte
visudo
deve ser executado como root. Sesudo
não funcionar,pkexec
às vezes funciona. Isso é coberto pela minha resposta anterior ... mas é uma resposta correta,visudo
por si só (quando não é executada como raiz) não funciona, e pode haver valor em respostas breves e corretas, mesmo quando suas recomendações se sobrepõem consideravelmente a outras respostas. Obviamente, se alguém entra no modo de recuperação, isso é um shell raiz e, em seguida,sudo
nemvisudo
é necessário para comandos como essepkexec
. Talvez seja isso que você quer dizer ...No Ubuntu 16.04 rodando em um VirtualBox (não deve fazer diferença), os métodos acima não funcionaram para mim (linha inválida no final do arquivo). O que funcionou foi:
su -
e, em seguida, dê a senha do seu próprio nome de usuário.root@ubuntu-xenial:~#
imediatamente, se/etc/sudoers
não estiver muito quebrado ou vazio. Não tenho certeza do que aconteceria nesse caso.visudo
e corrigir o arquivo.Ctrl + X
ele solicitará Salvar o buffer modificado. PressioneY
eEnter
Caso você
/etc/sudoers
esteja vazio ou com algo faltando, e você possa editá-lo, eis o meu conteúdo:fonte
Boas práticas: uma janela do terminal de backup e execute
sudo su
lá. Em outro termo, execute visudo ou sudo vim / etc / sudoers. Se algo der errado, volte ao terminal um e corrija o arquivo. Você pode perguntar, por que não apenas corrersudo su
antesvisudo
em um terminal? Isso também funciona, mas há um risco maior de você fechar o terminal antes que você perceba.fonte
Existe uma solução muito mais simples. Sem reiniciar, modo de recuperação ou
pkgexec
(pkgexec
não funcionou e não tem idéia do porquê ou como devo usá-lo), basta:E então apenas corrija o erro de sintaxe!
fonte