Linux Commands · 8 min read · Dec 25, 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 captura de tela a seguir mostra o erro sendo gerado quando eu estava tentando copiar um arquivo binário para um dos diretórios do sistema:

permissão negada no shell

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

executar comando com 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 aprofundados) que você deve saber para usar o comando de forma mais responsável e eficaz. E é exatamente isso que discutiremos 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 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:

O que é sudo

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.

usuários sudo

Desbloqueando a janela:

janela de desbloqueio

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

escolher contas sudo

No entanto, se você não estiver no Ubuntu, ou sua distribuição não fornecer esse recurso, você pode editar manualmente o arquivo /etc/sudoers para fazer a alteração. Você precisará adicionar a seguinte linha nesse arquivo:

[user]    ALL=(ALL:ALL) ALL

Não é necessá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 visudo

Para 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, após inserir a senha com sucesso uma vez, você 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 visudo

E então vá para a linha que diz:

Defaults env_reset

env_reset

e adicione a seguinte variável (destacada em negrito abaixo) no 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.

valor de tempo limite sudo

Caso você queira ser solicitado a inserir a senha toda vez que usar o comando sudo, então, nesse caso, você pode atribuir o valor ‘0’ a essa variável. E para aqueles que desejam que sua sessão sudo nunca expire, você pode atribuir o valor ‘-1’.

Por favor, note que usar timestamp_timeout com valor ‘-1’ é fortemente desencorajado.

A senha 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 qualquer 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_reset

e para

Defaults        env_reset,pwfeedback

E salve o arquivo.

Agora, sempre que você digitar a senha sudo, um asterisco aparecerá.

ocultar a senha sudo

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 menção. 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 a alguém acesso 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, da 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 exige que você execute uma infinidade de comandos que precisam de privilégios de root, e você não quer inserir a senha sudo a cada momento. 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 invoca. 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 ter em mente 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, executar o 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 requer que você insira a senha ‘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 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 informações sobre o comando sudo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.