Informational | Linux

Por que o sudo é mais seguro que o su - Linux

Por que o sudo é mais seguro que o su - Linux

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.conf para 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 sudo mantém logs detalhados em /var/log/auth.log (ou em /var/log/sudo.log, dependendo da configuração).
  • O doas també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.

linux | sudo | su | doas


Avatar

ItsZariep

YouTuber e programador, utiliza Linux desde 2015

Sobre mim


© 2026 ItsZariep

Powered by Tessera for Hugo