Linux comandos · 7 min read · Jan 31, 2026
Entendendo a diferença entre os comandos sudo e su no Linux

Em um de nossos artigos anteriores, discutimos o comando ‘sudo’ em detalhes. No final desse tutorial, houve uma menção a outro comando semelhante, ‘su’, em uma pequena nota. Bem, neste artigo, discutiremos em detalhes o comando ‘su’, bem como como ele difere do comando ‘sudo’.
Mas antes de fazermos isso, observe que todas as instruções e exemplos mencionados neste tutorial foram testados no Ubuntu 18.04 LTS e Debian 10.
O comando su no Linux
O principal trabalho do comando su é permitir que você troque para outro usuário durante uma sessão de login. Em outras palavras, a ferramenta permite que você assuma a identidade de outro usuário sem precisar sair e depois entrar (como esse usuário).
O comando su é usado principalmente para alternar para a conta de superusuário/root (já que privilégios de root são frequentemente necessários ao trabalhar na linha de comando), mas - como já mencionado - você pode usá-lo para alternar para qualquer outro usuário não-root também.
Aqui está como você pode usar este comando para alternar para o usuário root:
A senha que este comando requer é também a do usuário root. Portanto, em geral, o comando su exige que você insira a senha do usuário alvo. Após a senha correta ser inserida, a ferramenta inicia uma sub-sessão dentro da sessão existente no terminal.
su -
Há outra maneira de alternar para o usuário root: execute o comando ‘su -‘:
Agora, qual é a diferença entre ‘su’ e ‘su -‘? Bem, o primeiro mantém o ambiente do antigo/usuário original mesmo após a troca para root ter sido feita, enquanto o último cria um novo ambiente (como ditado pelo ~/.bashrc do usuário root), semelhante ao caso quando você faz login explicitamente como usuário root a partir da tela de login.
IMPORTANTE para usuários do Debian 10. A variável PATH do usuário root difere no Debian 10 ao usar ‘su’ vs ‘su -‘, diretórios como /sbin estão ausentes quando apenas ‘su’ é usado, o que significa que você pode receber erros de comando não encontrado mesmo para comandos básicos de administração do sistema. Portanto, sempre use ‘su -‘ no Debian 10 para se tornar o usuário root.
A página do manual do ‘su’ também deixa claro:
O argumento opcional - pode ser usado para fornecer um ambiente semelhante ao que o usuário esperaria se tivesse feito login diretamente.Então, você concordará que fazer login com ‘su -‘ faz mais sentido. Mas como o comando ‘su’ também existe, pode-se perguntar quando isso é útil. O seguinte trecho - retirado do site wiki do ArchLinux - dá uma boa ideia sobre os benefícios e armadilhas do comando ‘su’:
Às vezes, pode ser vantajoso para um administrador de sistema usar a conta de shell de um usuário comum em vez da sua própria. Em particular, ocasionalmente a maneira mais eficiente de resolver o problema de um usuário é fazer login na conta desse usuário para reproduzir ou depurar o problema.
No entanto, em muitas situações, não é desejável, ou pode até ser perigoso, que o usuário root esteja operando a partir da conta de shell de um usuário comum e com as variáveis ambientais dessa conta em vez de sua própria. Ao usar inadvertidamente a conta de shell de um usuário comum, o root poderia instalar um programa ou fazer outras alterações no sistema que não teriam o mesmo resultado se fossem feitas enquanto usava a conta root. Por exemplo, um programa poderia ser instalado que poderia dar ao usuário comum o poder de danificar acidentalmente o sistema ou obter acesso não autorizado a certos dados.
Nota: Caso você queira passar mais argumentos após - em ‘su -‘, então você deve usar a opção de linha de comando -l que o comando oferece (em vez de -). Aqui está a definição de - e a opção de linha de comando -l:
-, -l, --login
Fornecer um ambiente semelhante ao que o usuário esperaria se tivesse feito login diretamente.
Quando - é usado, deve ser especificado como a última opção do su. As outras formas (-l e --login) não têm essa restrição.su -c
Há outra opção do comando ‘su’ que vale a pena mencionar: -c. Ela permite que você forneça um comando que deseja executar após alternar para o usuário alvo.
A página do manual do ‘su’ explica:
-c, --command COMMAND
Especifique um comando que será invocado pelo shell usando seu -c.
O comando executado não terá terminal controlador. Esta opção não pode ser usada para executar programas interativos que precisam de um TTY controlador.Considere o seguinte modelo de exemplo:
su [usuário-alvo] -c [comando-a-executar]Então, neste caso, o ‘comando-a-executar’ será executado como:
[shell] -c [comando-a-executar]Onde ‘shell’ seria substituído pelo shell do ‘usuário-alvo’ definido no /etc/passwd.
Sudo vs Su
Agora que discutimos os fundamentos do comando ‘su’, é hora de discutirmos as diferenças entre os comandos ‘sudo’ e ‘su’.
Senha
A principal diferença entre os dois é a senha que eles requerem: enquanto ‘sudo’ requer a senha do usuário atual, ‘su’ exige que você insira a senha do usuário root.
Claramente, ‘sudo’ é uma alternativa melhor entre os dois no que diz respeito à segurança. Por exemplo, considere o caso de um computador sendo usado por vários usuários que também requerem acesso root. Usar ‘su’ em tal cenário significa compartilhar a senha root com todos eles, o que não é uma boa prática em geral.
Além disso, caso você queira revogar o acesso de superusuário/root de um determinado usuário, a única maneira é mudar a senha root e depois redistribuir a nova senha root entre todos os outros usuários.
Com o Sudo, por outro lado, você pode lidar com esses dois cenários sem esforço. Dado que ‘sudo’ exige que os usuários insiram sua própria senha, você não precisa compartilhar a senha root com todos os usuários em primeiro lugar. E para impedir que um determinado usuário acesse privilégios root, tudo o que você precisa fazer é ajustar a entrada correspondente no arquivo ‘sudoers’.
Comportamento padrão
A outra diferença entre os dois comandos está em seu comportamento padrão. Enquanto ‘sudo’ permite que você execute apenas um único comando com privilégios elevados, o comando ‘su’ inicia um novo shell, permitindo que você execute quantos comandos quiser com privilégios root até que você saia explicitamente desse shell.
Portanto, o comportamento padrão do comando ‘su’ é potencialmente perigoso, dado a possibilidade de que o usuário possa esquecer que está trabalhando como root e pode inadvertidamente fazer algumas alterações irreversíveis (como executar o comando ‘rm -rf’ no diretório errado). Para uma discussão detalhada sobre por que não é encorajado trabalhar sempre como root, vá aqui.
Registro
Embora os comandos executados através do ‘sudo’ sejam executados como o usuário alvo (que é ‘root’ por padrão), eles são marcados com o nome do usuário do sudoer. Mas no caso do ‘su’, não é possível rastrear diretamente o que um usuário fez após ter feito su para a conta root.
Flexibilidade
O comando ‘sudo’ é muito mais flexível, pois você pode até limitar os comandos aos quais deseja que os sudoers tenham acesso. Em outras palavras, usuários com acesso ao ‘sudo’ podem ter acesso apenas aos comandos que são necessários para seu trabalho. No entanto, com ‘su’ isso não é possível - ou você tem o privilégio de fazer tudo ou nada.
Sudo su
Presumivelmente devido aos riscos potenciais envolvidos com o uso de ‘su’ ou login direto como root, algumas distribuições Linux - como o Ubuntu - desativam a conta de usuário root por padrão. Os usuários são incentivados a usar ‘sudo’ sempre que precisarem de privilégios root.
No entanto, você ainda pode fazer ‘su’ com sucesso, ou seja, sem inserir a senha root. Tudo o que você precisa fazer é executar o seguinte comando:
sudo suComo você está executando o comando com ‘sudo’, você só precisará inserir sua senha. Assim que isso for feito, o comando ‘su’ será executado como root, o que significa que não pedirá nenhuma senha.
PS: Caso você queira habilitar a conta root em seu sistema (embora isso seja fortemente desencorajado porque você sempre pode usar ‘sudo’ ou ‘sudo su’), você terá que definir a senha root manualmente, o que pode ser feito usando o seguinte comando:
sudo passwd rootConclusão
Tanto este quanto nosso tutorial anterior (que se concentra em ‘sudo’) devem lhe dar uma boa ideia sobre as ferramentas disponíveis que permitem que você realize tarefas que exigem privilégios elevados (ou um conjunto completamente diferente de privilégios). Caso você tenha algo a compartilhar sobre ‘su’ ou ‘sudo’, ou queira compartilhar sua própria experiência, você é bem-vindo a fazer isso nos comentários abaixo.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.