Como modificar um arquivo '/ etc / sudoers' inválido?

199

Como edito um arquivo inválido de sudoers? Ele joga abaixo do erro e não está permitindo que eu edite 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
    
por YumYumYum 30.10.2011 / 20:15

11 respostas

306

Em um sistema Ubuntu moderno (e muitas outras distribuições GNU / Linux), consertar um arquivo sudoers corrompido é realmente muito fácil, e não requer reinicialização, usando um live CD ou acesso físico à máquina. / p>

Para fazer isso via SSH, faça o login na máquina e execute o comando pkexec visudo . Se você tiver acesso físico à máquina, o SSH é desnecessário; basta abrir uma janela do Terminal e executar esse comando pkexec .

Assumindo que você (ou algum outro usuário) esteja autorizado a executar programas como root com o PolicyKit, você poderá inserir sua senha e, em seguida, executará visudo como root e poderá corrigir seu /etc/sudoers .

Se você precisar editar um dos arquivos de configuração em /etc/sudoers.d (o 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 precisa executar comandos adicionais de administração do sistema como root para corrigir o problema (também incomum nessa circunstância, mas comum em outros), inicie um shell raiz interativo com pkexec bash . De modo geral, qualquer comando não gráfico executado com sudo pode ser executado com pkexec .

(Se houver mais de uma conta de usuário no sistema autorizada para executar programas como root com o PolicyKit, então, para qualquer uma dessas ações, será solicitado que você selecione qual delas deseja usar, antes de ser solicitado para sua senha.)

Se isso não funcionar - por exemplo, se não houver usuários autorizados a executar programas como root via PolicyKit - então inicialize a partir de um live CD 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 há apenas uma partição ext4, e esse é o sistema de arquivos raiz.

Suponha que o sistema de arquivos raiz do sistema Ubuntu 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 com sudo nano -w /mnt/etc/sudoers . Ou, melhor ainda, você pode editá-lo com

sudo visudo -f /mnt/etc/sudoers

(que impedirá que você salve um arquivo sudoers com sintaxe incorreta).

    
por Eliah Kagan 30.10.2011 / 20:45
40

Sempre use visudo para editar seu arquivo sudoers, nunca o edite diretamente. Isso impedirá que você o salve em disco, a menos que valide.

    
por Caesium 20.11.2011 / 18:08
19

Digite:

pkexec visudo

Em seguida, altere a última linha

#includedir /etc/sudoers

Para:

#includedir /etc/sudoers.d

Isso deve resolver seu problema.

    
por Andrej Burcev 21.02.2013 / 19:23
9

se alguém como eu não tiver pkexec instalado, ou não for capaz de executar o vi, visudo, nano ou qualquer outro editor para alterar o arquivo sudoers, você pode ter certeza com este processo. Eu fui salvo com isso:

  • reinicializar
  • segure a tecla Shift enquanto inicializa para ter opção para o modo de recuperação (digite-o)
  • insira a linha de comando como raiz (segunda última opção no menu do grub)
  • remonte o dispositivo de inicialização para rw e aplique o direito de execução para o usuário e edite o arquivo

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

conserte esse erro e seja feliz:)

    
por Kresimir Pendic 20.10.2014 / 23:40
5

Não há nada errado #include sudoer.d remover #include sudoer.d não fará nenhuma diferença.

Mas, por favor, verifique se você não tem erros de sintaxe. Eu tive o mesmo problema, mas passei horas para consertar e descobri que são erros de sintaxe. Consulte o manual e faça-o certo.

Por exemplo Digamos que seu nome de usuário seja: dolly Eu usei seguindo o que está errado

 dolly ALL = (ALL) ALL NO PASSWD: ALL

a sintaxe correta é

dolly ALL = (ALL) ALL //give permission to everything, not good

ou

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

espero que isso ajude

    
por Thusitha Nuwan 03.07.2012 / 01:15
5

Se você errou o arquivo do sudo.You precisará:

  • Reinicie no modo de recuperação (pressione "escapar" durante a inicialização, escolha a opção do modo de recuperação na tela do grub)
  • Escolha a opção "Ativar a rede" (se você não fizer isso, seu sistema de arquivos será montado como somente leitura. Quem conheceu)
  • Chosee a opção "Ignorar a shell de raiz"
  • execute visudo, corrija seu arquivo
  • Reinicialize com a opção normal do grub

source: - link

    
por streak 14.12.2012 / 11:59
3

execute o modo de recuperação e digite este

chown -R root:root /etc/sudoers.d
chmod u=rwx,g=rx,o=rx /etc/sudoers.d/
chmod u=r,g=r,o= /etc/sudoers.d/*

apenas o grupo e o usuário root devem ter privilégios de leitura

    
por kosaidpo 20.11.2011 / 18:11
2

Você também pode editar sua entrada de inicialização enquanto estiver no grub.

Simplesmente reinicie seu computador e espere o grub mostrar. Em seguida, pressione "e" na entrada "Ubuntu" para editá-lo.

Procure uma linha com "linux=" ou "kernel=" e simplesmente adicione um "single" ao final dessa linha.

Em seguida, pressione F10 para inicializar esta entrada de inicialização temporariamente modificada. Isto lhe dará um shell (sem GUI) com direitos de root e você pode editar o arquivo sudoers com s.th. como nano / etc / sudoers de volta ao estado anterior.

Em seguida, reinicie e pronto.

    
por Markus Ressel 13.01.2013 / 05:41
2

Você também pode logar como root em um console tty com Ctrl + Fn ( Fn de 1 a 6) e rodando visudo .

    
por magisterludi 09.03.2013 / 08:12
2
pkexec visudo

depois, reverta seus erros

    
por Bhavesh Gabani 01.01.2014 / 09:23
0

Eu encontrei o bug. Está nas duas últimas linhas do arquivo /etc/sudoers padrão. Remova as seguintes entradas do final do arquivo / etc / sudoers com visudo .

#includedir /etc/sudoers.d
    
por George Van Tuyl 23.02.2012 / 22:57

Tags