Sempre que eu quiser executar algo que exija sudoer
muitas vezes, preciso pesquisar no Google para que a formatação /etc/sudoers
me lembre novamente qual é exatamente a maneira correta de escrevê-lo.
Agora vejo diferentes estilos de escrita no meu sudoers
arquivo, o que é a consequência de diferentes resultados do Google ao longo dos meses. Também notei que o segundo exemplo (abaixo) parece funcionar no XFCE, mas não no Canela (Gnome 3). Isso pode ser totalmente não relacionado, mas, no entanto, eu gostaria de saber de uma vez por todas, qual é a gramática correta da linha sudoer e qual é a diferença entre os exemplos dados?
redsandro ALL=NOPASSWD:/path/to/command
redsandro ALL=(ALL) NOPASSWD:/path/to/command
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
Além disso, para que servem todos ALL
? Um usuário, um comando, mas preciso usar a ALL
palavra-chave até três vezes? Estou fazendo isso errado?
Claro, omitindo NOPASSWD:
faz você digitar sua senha antes você tem permissão para executar o comando, mas um ponto de confusão é o uso de =
e :
, para o comando final que é o assunto da linha pode ser prefixado por um ou outro =
, :
, , ou
)
, gramática confusa para semântica semelhante.
sudoers
sintaxe. Ler a página de manual foi ainda mais frustrante: descreve a chamada linguagem EBNF concisa e exata; os exemplos são exaustivamente longos. Portanto, não estou surpreso ao encontrar tantos tópicos aqui sobre esse arquivo.Respostas:
É mais do que apenas um usuário e um comando:
host
especifica os nomes de host para os quais esta linha é válida. A menos que você esteja compartilhando arquivos de usuários entre hosts diferentes que precisam de regras diferentes usando o valor especial queALL
significa "todos os hosts" é uma boa opção.user
especifica quais usuários você pode usar com as-u
opções para executar o comando. Se você omitir isso, não poderá usar a-u
opçãogroup
especifica quais grupos você pode usar com as-g
opções. Se você omitir, não poderá usar a-g
opçãoAmbos
user
egroup
entendem o valor especialALL
como "todos os usuários / grupos"Se você omitir tudo
(user:group)
, não poderá usar-u
e-g
apenas executar o comando como root.tag
permite especificar algumas opções, comoNOPASSWD
Portanto, com o seu primeiro exemplo, você pode executar o comando como root, mas não pode usá-lo
-u
e-g
executá-lo como qualquer outro usuário ou grupo.Com o exemplo 2., você pode executar o comando como root ou usá
-u
-lo como qualquer outro usuário.Com 3., você pode executar o comando como root ou usar
-u
ou-g
executar o comando como qualquer outro usuário ou grupo.fonte
127.0.0.1
oulocalhost
comohost
segurança adicional trivial?ALL
isto é.Vamos desmontar este:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro é o nome de usuário ao qual estamos dando permissão. Coloque um% na frente para aplicá-lo a um grupo.
ALL é um nome para esta regra. Sudoers podem fazer muito mais do que apenas conceder permissões globais. É aí que fica complicado, no entanto.
= não precisa de explicação
ALL: ALL lê como (who_to_run_it_as: what_group_to_run_it_as). Dessa forma, você pode permitir a execução de um comando, mas apenas no contexto de um usuário ou grupo específico.
NOPASSWD: diz para desativar o prompt de senha.
/ path / to / command permite especificar comandos específicos path_to_commmand, another_command
É importante lembrar que, embora o sudo seja usado principalmente por usuários domésticos para aumentar os privilégios de root, ele pode ser e é usado para controlar o acesso a comandos específicos de uma maneira muito mais granular.
fonte
%
e, another_command
notas. Agora eu entendo a%wheel
linha na distribuição baseada no Fedora.