Certas opções de configuração podem ser alteradas em tempo de execução através de uma ou mais linhas de
Default_Entry.
Isso pode afetar todos os usuários em qualquer host, todos os usuários de um host específico, um usuário específico, um comando específico ou comandos sendo executados como um usuário específico.
Observe que entradas em uma base por comando podem não incluir argumentos em linha de comando. Se você precisa especificar argumentos, defina um Cmnd_Alias e faça referência a ele (sic).
Parâmetros podem ser flags, valores inteiros (integer), cadeia de caracteres (string) ou listas. Flags são explicitamente valores booleanos e podem ser modificados com o operador de negação (!). Alguns parâmetros inteiros, cadeias de caracteres e valores em listas podem ser utilizados em um contexto booleano, permitindo ativar ou desativar esses parâmetros. Valores de parâmetros com múltiplas opções DEVEM ser limitados por aspas duplas. Caracteres especiais DEVEM ser escapados com uma barra invertida.
Listas utilizam dois operadores: O sinal de (+=) e (-=), que são utilizados para adicionar e remover valores da lista. Entradas padrão são analisadas (parsed) na seguinte ordem: genericamente, por valores padrão de host e usuário, por runas e finalmente por padrões de comando. Veja "Opções de SUDOERS" para uma lista completa dos parâmetros suportados.
Uma especificação de usuário determina que comandos os usuários de sudo podem executar em um host específico.
Por padrão, comandos são executados como root, mas isso pode ser modificado em uma base por comando. A estrutura básica para uma especificação de usuário é do tipo:
" quem a partir de onde = (como quem) pode fazer o quê "
Essa declaração pode ser explicada em duas partes:
Uma declaração
Runas_Spec define o usuário e/ou grupo que o comando é executado como. Uma Runas_Spec completa consiste de duas
Runas_List separadas por dois-pontos e fechadas entre parêntesis. A primeira Runas_List indica quais usuários podem executar o comando com a opção "-u" de sudo.
A segunda parte da declaração (lado direito da igualdade) define uma lista de grupos que podem ser declarados através da opção "-g" de sudo. Se ambas Runas_List são definidas, o comando pode ser executado com uma combinação de usuários e grupos listados na respectiva Runas_List.
Se somente a primeira parte for declarada, o comando pode ser executado por qualquer usuário na lista, mas nenhuma opção de grupo pode ser especificada.
Se a primeira Runas_List for vazia, mas a segunda for declarada, o comando pode ser executado como se o usuário que invocou sudo, porém com o grupo definido na Runas_List.
Se ambas declarações são vazias o comando pode ser executado com as credencias do usuário que invocou sudo e nenhum grupo de ser declarado.
Uma Runas_Spec define os comandos padrões que serão seguidos. Isso significa:
dgb boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
O usuário dgb pode executar /bin/ls, /bin/kill e /usr/bin/lprm, mas somente como um operador. Para fazer isso o comando invocando sudo deve ser assim:
sudo -u operator /bin/ls
É possível modificar essa Runas_Spec para uma declaração mais sofisticada como:
dgb boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
O usuário dgb agora pode executar /bin/ls como operador, mas os comandos /bin/kill e /usr/bin/lprm somente como root.
Outro refinamento possível é explicitar o usuário e o grupo que devem ser utilizados.
dgb boulder = (operator : operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
Observe que, enquanto a parte de grupo da Runas_Spec não for declarada, isso permite ao usuário executar o comando com um grupo qualquer. Ao ser declarada, ela força o usuário a usar um grupo específico. Se nenhum grupo é definido na linha de comando, o comando será executado com um dos grupos listados na base de dados de senha (
/etc/group). As declarações a seguir são válidas em cada um destes contextos de permissões sudo:
sudo -u operator /bin/ls
sudo -u operator -g operator /bin/ls
sudo -g operator /bin/ls
No exemplo a seguir, o usuário tcm pode executar comandos para acessar um dispositivo de modem, desde que ele seja inserido no grupo dialer.
tcm boulder = (:dialer) /usr/bin/tip, /usr/bin/cu, /usr/local/bin/minicom
Observe que neste exemplo somente o grupo está configurado, o comando é executado como usuário tcm. Para invocar uma chamada de sudo para este exemplo é preciso usar a opção "-g" obrigatoriamente.
sudo -g dialer /usr/bin/cu
Múltiplos usuários e grupos podem ser definidos em uma Runas_Spec, em qual caso o usuário pode selecionar qualquer combinação de usuário ou grupo, por exemplo:
alan ALL = (root, bin : operator, system) ALL
O usuário alan pode executar qualquer comando como root ou como bin, opcionalmente configurando o grupo para operator ou system.