Sudoers 1.8.12 - Parte III - Manual

Este artigo é parte de uma série de artigos sobre sudo. Nesta terceira parte tratamos de mais informações sobre a sintaxe, as regras e como escrever um sudoers eficiente. Continua na quarta parte.

[ Hits: 5.951 ]

Por: Perfil removido em 16/09/2015


Valores padrão



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).
Linux: Sudoers 1.8.12 - Parte III - Manual
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.
Linux: Sudoers 1.8.12 - Parte III - Manual
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.

    Próxima página

Páginas do artigo
   1. Valores padrão
   2. SELinux_Spec
Outros artigos deste autor

Minha experiência com Linux

Introduzindo prazerosamente aos poucos... o shell script

Instalando o Gnome-2.20.3 no Slackware 12 usando o Gslapt

Navegando na internet com (mais) segurança usando extensões no Mozilla/Firefox

Liberdade, usuários e políticas de manutenção de ignorância

Leitura recomendada

Introdução ao ModSecurity

Análise passiva (parte 2)

OUTGUESS: Oculte mensagens em fotos

Projeto Sharingan

Os segredos da criptografia com o Gcipher

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts