Por que tenho que editar o / etc / sudoers com o visudo?

51

Percebi que o arquivo sudoers e os arquivos de configuração do cron agem de uma maneira especial em comparação com outros arquivos de configuração no Linux. Eles precisam ser editados com um invólucro especial em vez de qualquer editor de texto. Por que é isso?

Brian Lyttle
fonte

Respostas:

71

Você usa o visudo principalmente para impedir a quebra do seu sistema. O Visudo executa verificações de suas alterações para garantir que você não tenha estragado nada. Se você estragou alguma coisa, poderia arruinar completamente sua capacidade de corrigi-la ou fazer qualquer coisa que exigisse privilégios sem reiniciar o modo de recuperação.

A página do manual descreve isso .

visudo edita o arquivo sudoers de maneira segura, análoga a vipw (8). visudo bloqueia o arquivo sudoers contra várias edições simultâneas, fornece verificações básicas de integridade e verifica se há erros de análise. Se o arquivo sudoers estiver sendo editado no momento, você receberá uma mensagem para tentar novamente mais tarde.

Zoredache
fonte
3
Interessante! +1, para ilustrar uma explicação simples para algo que eu deveria ter sabido há muito tempo :)
Greg Meehan
7
O comportamento do visudo está disponível genericamente como um comando chamado sudoedit. Isso faz o mesmo ciclo de bloqueio / cópia / edição / cópia / desbloqueio (embora obviamente não esteja na etapa de análise). Uma vantagem disso é que ele permite que as pessoas tenham acesso ao sudo para editar arquivos pertencentes à raiz sem iniciar um editor como raiz, o que pode permitir que eles iniciem um shell a partir do editor. Se eu sair do meu editor enquanto estiver executando o sudoedit, meu euid ainda é meu.
James F
18

A resposta do Zoredache é perfeita.

Mais uma coisa que vale a pena mencionar. Você pode usar seu editor favorito definindo EDITORou VISUAL:

export EDITOR=whatevertexteditoryouwant
export VISUAL=whatevertexteditoryouwant

Ou:

EDITOR=whatevertexteditoryouwant visudo
cstamas
fonte
Se você fizer isso, ainda executará a etapa de verificação de sintaxe ou será equivalente a chamar sudoedit como @ James F sugerido?
o0 '.
Sim é a resposta para sua pergunta. Você pode usar quase qualquer editor que possa chamar do cli.
Cstamas
3
Não foi uma pergunta de sim ou não: V
o0 '.
5
Ele vai fazer a verificação de sintaxe.
Cstamas