Sudo e Configuração do /etc/sudoers e /etc/sudoers.d | Linux
- Sudo e Configuração do
/etc/sudoerse/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 é:
- O sistema identifica o usuário atual (
whoami) - Verifica permissões no
/etc/sudoers - Solicita a senha do usuário atual
- 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árioALL→ qualquer host(ALL:ALL)→ pode executar como qualquer usuário/grupoALL→ 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 é:
/etc/sudoers- 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
NOPASSWDparaALL - Versionar
/etc/sudoers.dvia IaC (Ansible, Terraform, etc.) - Testar sempre com
visudoantes de aplicar em produção