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


Como faço para editar um arquivo sudoers inválido? 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

206
2017-10-30 19:15


origem


ótima pergunta considerando esta página cria esse erro help.ubuntu.com/community/RootSudoTimeout


Respostas:


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

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 pkexec comando.

Assumindo que você (ou algum outro usuário) esteja autorizado a executar programas como root com o PolicyKit, você pode digitar sua senha e, em seguida, ele será executado visudo Como root, e você pode consertar seu /etc/sudoers.

Se você precisar editar um dos arquivos de configuração /etc/sudoers.d (que em incomum nesta situação, mas possível), use pkexec visudo -f /etc/sudoers.d/nome do arquivo.

Se você tem uma situação relacionada onde você tem que executar comandos adicionais de administração do sistema como root para corrigir o problema (também incomum nesta circunstância, mas comum em outros), você pode iniciar um shell root interativo com pkexec bash. De um modo geral, qualquer comando não-gráfico que você executaria com sudo pode ser executado com pkexec em vez de.

(Se houver mais de uma conta de usuário no sistema autorizada para executar programas como root com o PolicyKit, então, por 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 - 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 sudo nano -w /mnt/etc/sudoers. Ou, melhor ainda, você pode editá-lo com

sudo visudo -f /mnt/etc/sudoers

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


318
2017-10-30 19:45



pkexec / usr / sbin / visudo trabalhou no debian 7 - marinara
Eles não poderiam apenas inicializar no modo de recuperação? - Seth♦
VACA SAGRADA! Muito obrigado! Salvei meu bacon. Adicionado um arquivo como sugerido no diretório etc / sudoers.d / USANDO UM EDITOR DE TEXTO REGULAR (D-O-N-T__D-O__T-H-A-T !!!). Perdeu toda a capacidade de fazer privilégios elevados, INCLUINDO, editando o arquivo ofensivo. Isso ajudou a editar o arquivo. Estranho, eu tive que editar o / etc / sudoers primeiro, então ele encontrou os erros no outro arquivo e o abriu para mim. Mesmo WEIRDER, a diretiva no arquivo / etc / sudoers 'inlcudedir /etc/sudoers.d' foi comentada, e ainda a inclui. - Dennis
@Dennis Um pouco confuso, #include diretivas em sudoers os arquivos são tratados especialmente; a liderança # não faz com que o resto da linha seja interpretado como um comentário, nesse caso. Como man sudoers diz: "O sinal de libra ('#') é usado para indicar um comentário (a menos que seja parte de uma diretiva #include ou a menos que ..." Consulte também visudo: #includedir sudoers.d (arquivado de lzone.de/blog). - Eliah Kagan
Meu usuário é sudoer, mas eu recebi este erro: Erro ao executar o comando como outro usuário: Não autorizado - SuB


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


45
2017-11-20 17:08



retrospectiva é 20/20 - code_monk
Não vai impedir o desastre. É fácil negar validamente a si mesmo. - Joshua
O visudo pode ser usado por scritps? Se sim, como? - Lukas
Eu não tenho visudo instalado. Então eu fiz pkexec vim. Em seguida, mostra a lista de usuários e pede senha. Quando eu forneço a senha, ele lança o erro como "Erro ao executar o comando como outro usuário: Não autorizado". Por favor ajude - Shyamkkhadka


Digitar:

pkexec visudo

Então mude a última linha

#includedir /etc/sudoers

Para:

#includedir /etc/sudoers.d

Deve resolver o seu problema.


20
2018-02-21 18:23



Eu notei que remover o líder # a partir de #includedir causa erros de sintaxe, o # faz parte da diretiva, pelo menos no Ubuntu 12.10. - SAFX
Isso só me salvou muita dor de cabeça. Graças a tonelada :) - Nitroware
Eu não tenho visudo instalado. Então eu fiz pkexec vim. Em seguida, mostra a lista de usuários e pede senha. Quando eu forneço a senha, ele lança o erro como "Erro ao executar o comando como outro usuário: Não autorizado". Por favor ajude - Shyamkkhadka


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

  • reiniciar
  • segure a tecla shift durante a inicialização para ter opção para o modo de recuperação (digite-o)
  • insira a linha de comando como root (segunda última opção no menu do grub)
  • remontar o dispositivo de inicialização para rw e aplicar o direito de execução para o usuário e editar o arquivo

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

conserte esse erro e seja feliz :)


10
2017-10-20 21:40



Enquanto a solução pkexec sugerida por @ eliah-kagan parece ser mais fácil, esta é mais universal. Na minha máquina, descobriu-se que não há pkexec instalado e, claro, eu não poderia instalá-lo porque o sudo apt-get install pkexec de alguma forma não funcionou. - running.t


Não há nada de 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-os da maneira correta.

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 isto ajude


6
2017-07-02 23:15



Uma abordagem melhor do que certificar-se de que você não tem erros de sintaxe é sempre usar 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- também criará e editará arquivos em /etc/sudoers.d. Ele também funcionará com qualquer editor de texto desejado. Vejo a manpage para detalhes. - Eliah Kagan
Quanto a dar permissão específica, observe que isso é útil apenas para comandos / aplicativos muito simples, porque qualquer aplicativo suficientemente complexo (incluindo thunderbird, que nunca deve ser executado como root de qualquer maneira) efetivamente dará ao usuário acesso completo ao sistema quando executado como root. Mesmo a funcionalidade aparentemente simples abre a porta para o 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 arquivos). /etc/sudoers, ou se as limitações de sintaxe impedirem, eles podem instalar seus próprios /etc/crontab). - Eliah Kagan


Se você estragou o seu sudoers arquivo, você 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, o seu sistema de arquivos será montado como somente leitura).
  • Chosee a opção 'Drop to root shell'
  • corre visudo, corrija seu arquivo
  • Reinicie com a opção normal de grub

fonte :- http://mario.net.au/content/recover-etcsudoers-ubuntu-1204


6
2017-12-14 10:59



Oi, isso remove o iptables, arquivos do sistema existente? - Shyamkkhadka


executar o modo de recuperação, em seguida, 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/*

somente o grupo e o usuário root devem ter lido privilégio


3
2017-11-20 17:11





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

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

Procure por 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.


2
2018-01-13 04:41





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


2
2018-03-09 07:12





pkexec visudo

então reverta seus erros


2
2018-01-01 08:23



não é necessário usar o pkexec - Braiam
@Braiam visudo tem que ser executado como root. E se sudo não funciona pkexec às vezes faz. Isso é coberto por minha resposta anterior... mas é uma resposta correta visudo por si só (quando não executado como root) não funcionará, e pode haver valor em respostas corretas e breves, mesmo quando suas recomendações se sobrepõem consideravelmente a outras respostas. Claro, se alguém entrar em modo de recuperação, isso é um shell de root e então nenhum dos dois sudo nem visudo é necessário para comandos como pkexec. Talvez seja o que você quer dizer ... - Eliah Kagan


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

#includedir /etc/sudoers.d

0
2018-02-23 21:57



Isso parece uma situação relacionada, mas diferente desta. Nesta situação, o problema não é que existam arquivos inválidos (ou permissões erradas) /etc/sudoers.d, mas isso /etc/sudoers foi em si corrupto. - Eliah Kagan