Linux Commands · 8 min read · Dec 16, 2025
Um Guia para Iniciantes sobre como Entender o sudo no Ubuntu

Já recebeu um erro de ‘Permissão negada’ enquanto trabalhava na linha de comando do Linux? É provável que você estivesse tentando realizar uma operação que requer permissões de root. Por exemplo, a seguinte captura de tela mostra o erro sendo gerado quando eu estava tentando copiar um arquivo binário para um dos diretórios do sistema:

Então, qual é a solução para esse problema? Simples, use o comando sudo.

O usuário que está executando o comando será solicitado a inserir sua senha de login. Uma vez que a senha correta é inserida, a operação será realizada com sucesso.
Embora o sudo seja, sem dúvida, um comando que todos que trabalham na linha de comando do Linux devem conhecer, existem vários outros detalhes relacionados (e mais profundos) que você deve saber para usar o comando de forma mais responsável e eficaz. E é exatamente isso que vamos discutir aqui neste artigo.
Mas antes de prosseguirmos, vale a pena mencionar que todos os comandos e instruções mencionados neste artigo foram testados no Ubuntu com o shell Bash.O que é sudo?
O comando sudo, como a maioria de vocês já deve saber, é usado para executar um comando com privilégios elevados (geralmente como root). Um exemplo disso já discutimos na seção de introdução acima. No entanto, se você quiser, pode usar o sudo para executar o comando como algum outro usuário (não-root).
Isso é alcançado através da opção de linha de comando -u que a ferramenta fornece. Por exemplo, no exemplo mostrado abaixo, eu (himanshu) tentei renomear um arquivo no diretório home de outro usuário (howtoforge), mas recebi um erro de ‘permissão negada’. E então eu tentei o mesmo comando ‘mv’ com ‘sudo -u howtoforge’, e o comando foi bem-sucedido:

Qualquer usuário pode usar sudo?
Não. Para que um usuário possa usar o sudo, uma entrada correspondente a esse usuário deve estar no arquivo /etc/sudoers. O seguinte parágrafo - retirado do site do Ubuntu - deve deixar isso mais claro:
O arquivo /etc/sudoers controla quem pode executar quais comandos como quais usuários em quais máquinas e também pode controlar coisas especiais, como se você precisa de uma senha para comandos específicos. O arquivo é composto por aliases (basicamente variáveis) e especificações de usuários (que controlam quem pode executar o quê).Se você estiver usando o Ubuntu, é fácil garantir que um usuário possa executar o comando sudo: tudo o que você precisa fazer é tornar essa conta de usuário do tipo ‘administrador’. Isso pode ser feito acessando Configurações do Sistema… -> Contas de Usuário.

Desbloqueando a janela:

Em seguida, selecione o usuário cujo tipo de conta você deseja alterar e, em seguida, altere o tipo para ‘administrador’

No entanto, se você não estiver no Ubuntu ou sua distribuição não fornecer esse recurso, pode editar manualmente o arquivo /etc/sudoers para fazer a alteração. Você precisará adicionar a seguinte linha nesse arquivo:
[user] ALL=(ALL:ALL) ALLDesnecessário dizer que [user] deve ser substituído pelo nome de usuário da conta à qual você está concedendo o privilégio sudo. Uma coisa importante a ser mencionada aqui é que o método oficialmente sugerido para editar este arquivo é através do comando visudo - tudo o que você precisa fazer é executar o seguinte comando:
sudo visudoPara lhe dar uma ideia do porquê exatamente isso é o caso, aqui está um trecho do manual do visudo:
visudo edita o arquivo sudoers de forma segura. visudo bloqueia o arquivo sudoers contra edições simultâneas, fornece verificações básicas de sanidade e verifica erros de análise. Se o arquivo sudoers estiver sendo editado atualmente, você receberá uma mensagem para tentar novamente mais tarde.Para mais informações sobre visudo, acesse aqui.
O que é uma sessão sudo?
Se você usa o comando sudo com frequência, tenho certeza de que você já observou que, depois de inserir a senha com sucesso uma vez, pode executar vários comandos sudo sem ser solicitado a inserir a senha. Mas após algum tempo, o comando sudo pede sua senha novamente.
Esse comportamento não tem nada a ver com o número de comandos com sudo que você executa, mas sim depende do tempo. Sim, por padrão, o sudo não pedirá a senha por 15 minutos após o usuário tê-la inserido uma vez. Após esses 15 minutos, você será solicitado a inserir a senha novamente.
No entanto, se você quiser, pode alterar esse comportamento. Para isso, abra o arquivo /etc/sudoers usando o seguinte comando:
sudo visudoE então vá para a linha que diz:
Defaults env_reset
e adicione a seguinte variável (destacada em negrito abaixo) ao final da linha
Defaults env_reset,timestamp_timeout=[novo-valor]O campo [novo-valor] deve ser substituído pelo número de minutos que você deseja que sua sessão sudo dure. Por exemplo, eu usei o valor 40.

Caso você queira ser solicitado a inserir a senha toda vez que usar o comando sudo, nesse caso você pode atribuir o valor ‘0’ a essa variável. E para aqueles de vocês que desejam que sua sessão sudo nunca expire, podem atribuir o valor ‘-1’.
Por favor, note que usar timestamp_timeout com valor ‘-1’ é fortemente desencorajado.
A senha do sudo
Como você pode ter observado, sempre que o sudo solicita uma senha e você começa a digitá-la, nada aparece - nem mesmo asteriscos, que geralmente é a norma. Embora isso não seja um grande problema em geral, alguns usuários podem querer que os asteriscos sejam exibidos por algum motivo.
A boa notícia é que isso é possível e bastante fácil de fazer. Tudo o que você precisa fazer é alterar a seguinte linha no arquivo /etc/sudoers:
Defaults env_resetpara
Defaults env_reset,pwfeedbackE salve o arquivo.
Agora, sempre que você digitar a senha do sudo, um asterisco aparecerá.

Algumas opções importantes da linha de comando sudo
Além da opção de linha de comando -u (que já discutimos no início deste tutorial), existem algumas outras opções importantes da linha de comando sudo que merecem ser mencionadas. Nesta seção, discutiremos algumas delas.
A opção -k
Considere um caso em que você acabou de executar um comando com sudo após inserir sua senha. Agora, como você já sabe, a sessão sudo permanece ativa por 15 minutos por padrão. Suponha que durante essa sessão, você precise dar acesso a alguém ao seu terminal, mas não quer que eles possam usar o sudo. O que você fará?
Felizmente, existe uma opção de linha de comando -k que permite aos usuários revogar a permissão sudo. Aqui está o que a página do manual do sudo tem a dizer sobre essa opção:
-k, --reset-timestamp
Quando usado sem um comando, invalida as credenciais em cache do usuário. Em outras palavras, na próxima vez que o sudo for executado, uma senha será necessária. Esta opção não requer uma senha e foi adicionada para permitir que um usuário revogue permissões sudo de um arquivo .logout.
Quando usada em conjunto com um comando ou uma opção que pode exigir uma senha, esta opção fará com que o sudo ignore as credenciais em cache do usuário. Como resultado, o sudo solicitará uma senha (se uma for exigida pela política de segurança) e não atualizará as credenciais em cache do usuário.A opção -s
Pode haver momentos em que seu trabalho exija que você execute uma infinidade de comandos que precisam de privilégios de root, e você não quer inserir a senha do sudo toda hora. Além disso, você não quer ajustar o limite de tempo da sessão sudo fazendo alterações no arquivo /etc/sudoers.
Nesse caso, você pode querer usar a opção de linha de comando -s do comando sudo. Aqui está como a página do manual do sudo explica:
-s, --shell
Executa o shell especificado pela variável de ambiente SHELL, se estiver definido, ou o shell especificado pela entrada do banco de dados de senhas do usuário que está invocando. Se um comando for especificado, ele é passado para o shell para execução através da opção -c do shell. Se nenhum comando for especificado, um shell interativo é executado.Então, basicamente, o que essa opção de linha de comando faz é:
- Lança um novo shell - quanto ao qual shell, a variável de ambiente SHELL é referida. Caso $SHELL esteja vazio, o shell definido no arquivo /etc/passwd é escolhido.
- Se você também estiver passando um nome de comando junto com a opção -s (por exemplo: sudo -s whoami), então o comando real que é executado é: sudo /bin/bash -c whoami.
- Se você não estiver tentando executar nenhum outro comando (significando que você está apenas tentando executar sudo -s), então você obtém um shell interativo com privilégios de root.
O que vale a pena lembrar aqui é que a opção de linha de comando -s lhe dá um shell com privilégios de root, mas você não obtém o ambiente root - é seu .bashrc que é carregado. Isso significa que, por exemplo, no novo shell que sudo -s executa, a execução do comando whoami ainda retornará seu nome de usuário, e não ‘root’.
A opção -i
A opção -i é semelhante à opção -s que acabamos de discutir. No entanto, existem algumas diferenças. Uma das principais diferenças é que -i também lhe dá o ambiente root, significando que seu .bashrc (do usuário) é ignorado. É como se tornar root sem fazer login explicitamente como root. Além disso, você não precisa inserir a senha do usuário root também.
*Importante: Por favor, note que existe um comando su que também permite que você troque de usuário (por padrão, ele permite que você se torne root). Este comando exige que você insira a senha de ‘root’. Para evitar isso, você também pode executá-lo com sudo (‘sudo su’); nesse caso, você só precisará inserir sua senha de login. No entanto, ‘su’ e ‘sudo su’ têm algumas diferenças subjacentes - para entendê-las, bem como saber mais sobre como ‘sudo -i’ se compara a elas, acesse aqui.*
Conclusão
Espero que, até agora, você tenha pelo menos entendido a ideia básica por trás do sudo e como você pode ajustar seu comportamento padrão. Tente experimentar as alterações no /etc/sudoers que explicamos aqui, e também participe da discussão no fórum (linkada no último parágrafo) para obter mais insights sobre o comando sudo.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.