Qual é a sintaxe apropriada dos sudoers para adicionar um usuário?

45

De acordo com os comentários em /etc/sudoers (Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

Minhas duas perguntas relacionadas:

  1. O que significa o ALL=(ALL) ALL na seguinte linha:

    root  ALL=(ALL)   ALL
    
  2. Eu testei essas duas linhas, mas não consigo descobrir como elas são funcionalmente diferentes:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

Eu li o manual, mas a especificação da sintaxe é difícil de seguir. Eu deduzi que a parte (ALL) ALL é o comando e as especificações da tag, mas eu ainda não consigo entender isso.

    
por Belmin Fernandez 17.08.2011 / 02:10

2 respostas

83

Observação: estou respondendo 1. , já que Ignacio já respondi 2. .

No seguinte sudo entry:

superadm  ALL=(ALL)   ALL

existem quatro campos:

  • O primeiro especifica um usuário que receberá privilégios para alguns comandos.
  • O segundo é raramente usado. É uma lista de nomes de host nos quais essa entrada do sudo será efetiva. Em configurações padrão, apenas um host é relevante (localhost), portanto, esse campo geralmente é deixado como ALL .
  • O campo fourth é a lista de comandos que o superadm poderá executar com privilégios elevados. ALL significa todos os comandos. Caso contrário, use uma lista de comandos separados por vírgulas.
  • O terceiro campo (aquele escrito (…) que é opcional) especifica quais usuários (e grupos) o usuário superadm será capaz de executar os seguintes comandos como. ALL significa que eles podem escolher qualquer coisa (sem restrições). Este campo é omitido, significa o mesmo que (root) .

Exemplo:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Aqui, alan tem permissão para executar os dois comandos /bin/ls e /bin/kill como root (ou bin ), possivelmente com privilégios adicionais operator ou system groups.

Portanto, alan pode optar por executar ls como o usuário bin e com privilégios de grupo operator como este:

sudo -u bin -g operator /bin/ls /whatever/directory

Se -u for omitido, será o mesmo que -u root . Se -g for omitido, nenhum privilégio de grupo adicional será concedido.

    
por 17.08.2011 / 03:05
8

Na página sudoers(5) man, seção DESCRIPTION , sub-seção Runas_Spec :

The first Runas_List indicates which users the command may be run as via sudo’s -u option.

...

If no Runas_Spec is specified the command may be run as root and no group may be specified.

Portanto, não há diferença funcional ao tentar executar comandos como root , ou seja, quando não estiver usando -u com sudo . A diferença é importante ao tentar executar comandos como outros usuários; o último impedirá isso, mas o primeiro permitirá.

    
por 17.08.2011 / 02:36

Tags