Por que o sudo é mais seguro que o su - Linux
10/04/2025
Olá a todos, como vão? Espero que estejam bem. Hoje vou falar sobre segurança ao executar programas como superusuário no Linux, especificamente a diferença entre usar sudo e su. Embora possa não parecer, eles não são intercambiáveis, e existem vários benefícios em usar o sudo em vez do su. Então, sem mais delongas, vamos começar.
Contexto
Como mencionei na introdução, em sistemas Unix e Linux, o gerenciamento de privilégios é um aspecto fundamental da segurança e da administração do sistema. Tradicionalmente, o comando su (switch user) tem sido a principal ferramenta para trocar de usuário, inclusive para acessar a conta de superusuário (root).
No entanto, ferramentas como sudo e doas ganharam popularidade por suas vantagens em termos de segurança, controle de acesso e auditoria. Neste post, analisaremos em detalhe por que sudo e doas são opções superiores ao su de uma perspectiva técnica e de segurança.
Diferenças fundamentais entre su, sudo e doas
Antes de analisar as vantagens do sudo e do doas, é importante entender como cada ferramenta funciona:
su (substitute user ou switch user):
- Permite trocar para outro usuário, inclusive o root, iniciando uma nova sessão com as permissões dele.
- Exige a senha da conta para a qual você quer trocar.
- Não oferece granularidade de permissões; uma vez dentro da sessão root, você tem todos os privilégios, sem restrições.
sudo (superuser do):
- Executa um único comando com privilégios elevados sem precisar fazer login como root.
- Usa um arquivo de configuração (
/etc/sudoers) que permite definir regras de acesso e restrições para cada usuário. - Pode registrar os comandos executados para auditoria e monitoramento.
doas (dedicated OpenBSD application subexecutor):
- Uma alternativa mais simples e leve ao
sudo, desenvolvida no OpenBSD. - Funciona de forma semelhante ao
sudo, mas com configuração mais simples e uma base de código menor, reduzindo a superfície de ataque. - Usa o arquivo
/etc/doas.confpara definir as permissões de execução.
Desvantagens do su em termos de segurança
Embora o su continue sendo uma ferramenta funcional, ele apresenta vários problemas de segurança que fazem com que seu uso seja desaconselhado em muitos ambientes modernos:
Exposição da senha do root
Usar o su exige que os usuários conheçam a senha do root. Isso implica que:
- Se um atacante obtiver acesso à senha, terá controle total do sistema.
- Não há como restringir quais comandos um usuário pode executar depois de trocar para root.
- Em ambientes com vários administradores, compartilhar a senha do root representa um risco grave de segurança.
Em contraste, sudo e doas permitem delegar permissões sem expor a senha do root.
Sessão root irrestrita
Quando um usuário executa su -, obtém um shell interativo com todos os privilégios de root. Isso significa que qualquer erro ou comando malicioso executado pode danificar o sistema de forma irreversível.
Por outro lado, sudo e doas permitem executar apenas os comandos necessários com privilégios elevados, sem precisar abrir uma sessão root permanente.
Falta de auditoria e controle
O su não registra os comandos executados em uma sessão root, o que dificulta a auditoria e o monitoramento das ações administrativas.
Já:
- O
sudomantém logs detalhados em/var/log/auth.log(ou em/var/log/sudo.log, dependendo da configuração). - O
doastambém permite um certo nível de auditoria através dos logs do sistema (/var/log/auth.log).
Esse registro de eventos é crucial para a segurança em ambientes multiusuário.
Vantagens do sudo sobre o su
Controle granular de permissões
O sudo permite definir quais comandos cada usuário pode executar sem conceder acesso root completo. Isso é gerenciado através do arquivo /etc/sudoers, onde podem ser configuradas regras como:
user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart apache2
Essa regra permite que o user1 reinicie o serviço Apache sem precisar digitar sua senha nem obter acesso completo ao sistema.
Autenticação baseada no usuário
O sudo autentica os usuários usando suas próprias credenciais em vez da senha do root, reduzindo a possibilidade de comprometer a conta de superusuário.
Registro e auditoria de ações
Cada comando executado com sudo é registrado nos logs do sistema, permitindo um rastreamento detalhado de quem executou qual ação e quando. Isso é fundamental para detectar acessos não autorizados ou erros operacionais.
Expiração de sessão e gerenciamento de tempo
O sudo possui mecanismos de expiração de autenticação (timestamp_timeout no /etc/sudoers), que permitem definir um tempo após o qual é necessária uma nova autenticação, melhorando a segurança.
Vantagens do doas sobre o sudo
Embora o sudo seja uma ferramenta poderosa, sua configuração pode ser complexa em alguns cenários. É aqui que o doas apresenta certas vantagens:
Simplicidade e menor superfície de ataque
O doas tem uma base de código muito menor e menos dependências que o sudo, reduzindo a possibilidade de vulnerabilidades de segurança.
Configuração minimalista
Enquanto o /etc/sudoers pode se tornar complexo, o doas usa um arquivo de configuração muito mais simples.
Melhor integração com o OpenBSD
O doas é a ferramenta padrão no OpenBSD e foi portado para outras distribuições Linux, oferecendo uma alternativa leve e eficiente.
sudo su
Por fim, tenho certeza de que o comando sudo su vem à mente de todos nós. Como a própria estrutura indica, esse comando chama o sudo para executar o su, ou seja, faz tudo sem restrições, o que o torna inseguro, pois não respeita as configurações do sudo nem gera logs.
A abordagem recomendada, e o que normalmente se faz, é desativar a execução do su com a configuração:
Cmnd_Alias BLOCK_SU = /bin/su, /usr/bin/su
%sudo ALL=(ALL) ALL, !BLOCK_SU
De preferência, você também poderia alterar as permissões de binários como su, chmod ou chown para que, mesmo sem sudo, o usuário comum não consiga executá-los, oferecendo uma camada dupla de segurança. Novamente, você pode fazer isso com os comandos que vê na tela:
Mesmo que você queira acessá-lo com uma conta de sysadmin, por exemplo, poderia configurar um grupo específico para poder executá-lo.
Alternativas ao sudo su
Agora, como alternativa ao sudo su, você pode usar sudo -s, doas -s ou sudo -i, dependendo da situação. Eles fornecem um shell eficaz com privilégios elevados, mantendo as configurações do sudo para impedir que certos comandos sejam executados.
Conclusão
O uso do su em sistemas modernos apresenta várias desvantagens em termos de segurança, controle de acesso e auditoria. sudo e doas são ferramentas superiores porque:
- Não exigem o compartilhamento da senha do root.
- Permitem conceder permissões específicas em vez de acesso total.
- Registram as ações para auditoria e supervisão.
- Oferecem mecanismos de controle adicionais, como a expiração de sessão.
Se for necessário um sistema robusto e flexível, o sudo continua sendo a melhor opção na maioria dos ambientes. No entanto, para quem busca uma solução mais simples e leve, o doas pode ser uma excelente alternativa, especialmente em sistemas que não exigem configurações de permissões complexas.
Em conclusão, abandonar o su em favor do sudo ou do doas é uma decisão alinhada com as melhores práticas de segurança na administração de sistemas Unix/Linux.


