Skip to main content

Sudo e Configuração do /etc/sudoers e /etc/sudoers.d | Linux

  • Sudo e Configuração do /etc/sudoers e /etc/sudoers.d | Linux

1. Visão Geral

O sudo (Superuser Do) permite que usuários autorizados executem comandos com privilégios elevados (normalmente como root), mantendo rastreabilidade e controle granular de permissões.

Diferente do su, o sudo:

  • Autentica o usuário atual
  • Registra logs de auditoria
  • Permite restrições por comando
  • Pode dispensar senha de forma controlada

2. Por que o sudo pede a senha do usuário atual?

Quando você executa:

sudo apt update

O fluxo interno é:

  1. O sistema identifica o usuário atual (whoami)
  2. Verifica permissões no /etc/sudoers
  3. Solicita a senha do usuário atual
  4. Executa o comando com UID 0 (root)

Isso garante:

  • Auditoria individual
  • Não exposição da senha do root
  • Controle fino de permissões

Verifique seu usuário atual:

whoami
id

3. Estrutura do Arquivo /etc/sudoers

O arquivo principal de configuração é:

/etc/sudoers

Nunca edite diretamente com vim ou nano.

Use:

sudo visudo

O visudo:

  • Bloqueia edição concorrente
  • Valida sintaxe antes de salvar
  • Evita corrupção do arquivo

4. Sintaxe do sudoers

Formato geral:

USUARIO HOST=(USUARIO_EXEC) COMANDOS

Exemplo:

adolfosp ALL=(ALL:ALL) ALL

Interpretação:

  • adolfosp → usuário
  • ALL → qualquer host
  • (ALL:ALL) → pode executar como qualquer usuário/grupo
  • ALL → qualquer comando

5. Diretório /etc/sudoers.d

O diretório:

/etc/sudoers.d/

É incluído automaticamente via:

#includedir /etc/sudoers.d

Ele permite configuração modular, separando regras específicas do arquivo principal.

Listagem típica:

ls -l /etc/sudoers.d/

Arquivos comuns:

  • README
  • 90-cloud-init-users
  • docker
  • devops
  • arquivos criados por automação

Cada arquivo segue exatamente a mesma sintaxe do sudoers principal.


6. Criando Configuração em /etc/sudoers.d

Crie sempre usando:

sudo visudo -f /etc/sudoers.d/devops

Nunca use edição direta.

Permissões corretas:

chmod 440 /etc/sudoers.d/devops

Verificação:

ls -l /etc/sudoers.d/

Esperado:

-r--r----- 1 root root

7. Exemplos de Configuração

7.1 Permitir sudo completo

adolfosp ALL=(ALL:ALL) ALL

7.2 Permitir apenas um comando específico

adolfosp ALL=(ALL) /usr/bin/systemctl restart nginx

7.3 Permitir execução sem senha

adolfosp ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

⚠ Use NOPASSWD com cautela.


7.4 Permitir grupo inteiro

%devops ALL=(ALL) ALL

Todos usuários do grupo devops terão permissão.


8. Avaliando Permissões

Para verificar o que um usuário pode executar:

sudo -l

Para outro usuário:

sudo -l -U usuario

9. Ordem de Avaliação

A ordem de leitura é:

  1. /etc/sudoers
  2. Arquivos em /etc/sudoers.d/ (ordem alfabética)

Se houver conflito, a última regra válida aplicada prevalece.


10. Boas Práticas de Segurança

  • Usar caminho absoluto dos comandos
  • Evitar curingas (*)
  • Preferir grupos a usuários individuais
  • Evitar NOPASSWD para ALL
  • Versionar /etc/sudoers.d via IaC (Ansible, Terraform, etc.)
  • Testar sempre com visudo antes de aplicar em produção