sudoers - explicação simples solicitada

20

Sempre que quiser executar algo que exija que eu seja sudoer demais, preciso procurar na Google a formatação de /etc/sudoers para lembrar novamente qual é a maneira correta de escrevê-lo.

Agora vejo estilos de escrita diferentes no meu arquivo sudoers , que é a consequência de diferentes resultados do Google ao longo dos meses. Eu também notei que o segundo exemplo (abaixo) parece funcionar no XFCE, mas não no Cinnamon (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?

  
  1. redsandro ALL=NOPASSWD:/path/to/command
  2.   
  3. redsandro ALL=(ALL) NOPASSWD:/path/to/command
  4.   
  5. redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
  6.   

Além disso, para que são todos os ALL ? Um usuário, um comando, mas preciso usar a palavra-chave ALL até três vezes? Estou fazendo isso errado?

Claro, omitir NOPASSWD: faz você digitar sua senha antes de ter permissão para executar o comando, mas um ponto de confusão é o uso de = e : , para o comando final que é o assunto de a linha pode ser prefixada por = , : , ou ) , gramática confusa para semânticas semelhantes.

    
por Redsandro 02.04.2012 / 16:25

2 respostas

29

É mais do que apenas um usuário e um comando:

redsandro host=(user:group) tag:commands
  • host especifica os nomes de host para os quais essa linha é válida. A menos que você esteja compartilhando um arquivo asudoers entre hosts diferentes que precisam de regras diferentes usando o valor especial ALL , o que significa que "todos os hosts" é uma boa escolha.

  • user especifica quais usuários você pode usar com as opções -u para executar o comando. Se você omitir isso, não poderá usar a opção -u .

  • group especifica quais grupos você pode usar com as opções -g . Se você omitir, não poderá usar a opção -g .

Tanto user como group entendem o valor especial ALL como "todos os usuários / grupos"

Se você omitir toda a coentrada de (user:group) , não será possível usar -u e -g , mas apenas executar o comando como root.

  • tag permite que você especifique algumas opções, como NOPASSWD

Portanto, com seu primeiro exemplo, você pode executar o comando como root, mas não pode usar -u e -g para executá-lo como qualquer outro usuário ou grupo.

Com o exemplo 2. você pode executar o comando como root ou usar -u para executá-lo como qualquer outro usuário.

Com 3. você pode executar o comando como root ou usar -u ou -g para executar o comando como qualquer outro usuário ou grupo.

    
por Florian Diesch 02.04.2012 / 17:42
8

Vamos separar este um: redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

redsandro é o nome de usuário para o qual estamos dando permissão. Coloque um% na frente para aplicá-lo a um grupo.

ALL é um nome para essa regra. Sudoers podem fazer muito mais do que apenas conceder permissões globais. É aí que fica complicado embora.

= 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: informa para desativar o prompt de senha.

/ path / to / command permite que você especifique comandos específicos path_to_commmand, another_command

O importante é lembrar que, embora o sudo seja usado principalmente por usuários domésticos para escalar privilégios de root, ele pode ser usado para controlar o acesso a comandos específicos de maneira muito mais granular.

    
por RobotHumans 02.04.2012 / 17:45

Tags