Ubuntu sudo

Instalar programas, mudar configurações do sistema, reiniciar serviços: tudo isso exige permissão de administrador. No Ubuntu, você ganha essa permissão comando por comando, colocando sudo na frente. Nesta aula você vai entender o que acontece quando faz isso e como evitar os erros mais comuns.

Você vai aprender
  • Quem é o root e por que o Ubuntu não deixa você usá-lo direto.
  • O que o sudo faz, e por que a senha não aparece quando você digita.
  • As formas de usar: sudo comando, sudo !!, sudo -i, sudo -u.
  • Por que sudo echo … > arquivo não funciona, e o que usar no lugar.

Root, o administrador

Todo Linux tem um usuário especial chamado root ("raiz"). Ele pode tudo: ler qualquer arquivo, apagar o sistema inteiro, mudar a senha de qualquer pessoa. Os outros usuários, como a ana, só mexem no que é deles, principalmente em /home/ana.

Veja a diferença: a pasta pessoal do root é proibida para a ana.

$ whoami
ana
$ ls /root
ls: não é possível abrir o diretório '/root': Permissão negada

No Ubuntu, ninguém faz login como root. A senha dele vem bloqueada. Em vez disso, o primeiro usuário criado na instalação entra no grupo sudo e pode pedir poderes de root quando precisar. As vantagens:

  • Menos acidentes: você trabalha como usuário comum e só vira administrador para um comando específico.
  • Registro: cada uso do sudo fica anotado nos logs, com o nome de quem rodou o quê.
  • Nenhuma senha compartilhada: cada administrador usa a própria senha. Para tirar o acesso de alguém, basta tirá-lo do grupo sudo.

Usando o sudo

sudo vem de superuser do: "superusuário, faça".

sudo
"Rode o que vem depois como root."
ls
O comando que você quer rodar.
/root
O argumento desse comando, como sempre.
$ sudo ls /root
[sudo: authenticate] Senha:                  « digite a SUA senha
snap

Três coisas importantes sobre o pedido de senha:

  1. É a sua senha, a mesma do login. O root não tem senha no Ubuntu.
  2. Nada aparece enquanto você digita: nem letras, nem asteriscos. O teclado está funcionando. Digite e aperte Enter.
  3. Ela fica "lembrada" por 15 minutos naquele terminal. Os próximos sudo não pedem de novo.
$ sudo apt update
[sudo: authenticate] Senha:
Atingido:1 http://br.archive.ubuntu.com/ubuntu resolute InRelease
Obter:2 http://security.ubuntu.com/ubuntu resolute-security InRelease [126 kB]
…
$ sudo apt upgrade
Lendo listas de pacotes... Pronto            « dessa vez não pediu senha
sudo-rs

Desde o Ubuntu 25.10, o sudo padrão é o sudo-rs, uma versão reescrita em Rust por segurança. O uso é o mesmo. As diferenças que você vai notar são o pedido de senha [sudo: authenticate] Senha: e algumas mensagens em inglês. O sudo antigo continua disponível com o nome sudo.ws.

O que o comando devolve

O sudo devolve o código de saída do comando que ele rodou. Se o comando deu certo, 0:

$ sudo mkdir /opt/meuapp
$ echo $?
0
$ ls -ld /opt/meuapp
drwxr-xr-x 2 root root 4096 Oct 15 10:31 /opt/meuapp     « dono: root

Repare: a pasta foi criada pelo root, então pertence ao root. Se depois você quiser trabalhar nela sem sudo, vai precisar mudar o dono (veja chown).

Missão: tente criar a pasta /opt/meuapp sem sudo e veja o erro. Depois crie com sudo e confira o dono com ls -ld /opt/meuapp.


Formas diferentes de usar

Esqueceu o sudo? sudo !!

No bash, !! significa "o último comando". É o atalho mais usado com o sudo:

$ apt install htop
Erro: Não foi possível abrir arquivo de trava /var/lib/dpkg/lock-frontend - open (13: Permissão negada)
Erro: Não é possível adquirir a trava da interface do dpkg (/var/lib/dpkg/lock-frontend), você é root?
$ sudo !!
sudo apt install htop                        « o bash mostra o comando completo antes
[sudo: authenticate] Senha:

Um terminal inteiro como root: sudo -i

Para fazer várias tarefas de administrador seguidas, sudo -i (de interactive, "interativo") abre um shell de root. O prompt muda de $ para #, um aviso visual de que você pode tudo:

$ sudo -i
#> whoami
root
#> pwd
/root
#> exit
sair                                         « o bash em português escreve "sair"
$ whoami
ana
Atenção: saia assim que terminar

No shell de root não existe "Permissão negada" para te proteger. Um rm errado apaga arquivos do sistema. Faça só o necessário e digite exit.

Como outro usuário: sudo -u

sudo
Executa como outro usuário…
-u www-data
…este (user). Sem -u, o padrão é root.
ls /var/www
O comando.

É útil para testar se um serviço, como o servidor web (usuário www-data), consegue ler os arquivos dele.

Ver o que você pode fazer: sudo -l

$ sudo -l
User ana may run the following commands on notebook:
    (ALL : ALL) ALL

(ALL : ALL) ALL quer dizer: como qualquer usuário, de qualquer grupo, qualquer comando. Ou seja, administradora completa.

Esquecer a senha agora: sudo -k

Antes de sair de perto do computador, sudo -k (de kill, "invalidar") faz o próximo sudo pedir a senha de novo.

Qual forma usar?

FormaExemploMelhor quando…
sudo comandosudo apt updateUma tarefa de administrador. É a forma padrão.
sudo !!sudo !!Você esqueceu o sudo no comando anterior.
sudo -isudo -iVárias tarefas seguidas como root (com cuidado).
sudo -usudo -u www-data lsTestar algo como outro usuário.
sudo teeecho x | sudo tee arqGravar num arquivo do sistema (veja abaixo).

Missão: entre num shell de root com sudo -i, confirme com whoami e pwd, liste /root e saia com exit. Repare como o prompt muda.


A armadilha do redirecionamento

Este comando parece certo, mas falha:

$ sudo echo "192.168.0.50 servidor" >> /etc/hosts
bash: /etc/hosts: Permissão negada

O motivo: quem abre o arquivo para o >> é o seu shell, que roda como ana, antes do sudo entrar em ação. O sudo só vale para o echo, que não precisava dele.

A solução é o tee, um comando que grava num arquivo o que recebe. Como é ele quem abre o arquivo, o sudo vale na hora certa:

echo "…"
Gera o texto (como ana, sem problema).
|
Entrega o texto ao próximo comando.
sudo tee
Grava como root…
-a
…acrescentando no fim (append). Sem -a, apaga o conteúdo antes.
/etc/hosts
O arquivo.
$ echo "192.168.0.50 servidor" | sudo tee -a /etc/hosts
192.168.0.50 servidor

O tee também mostra na tela o que gravou. Para escondê-lo, acrescente > /dev/null no fim. Para editar arquivos maiores, use um editor: sudo nano /etc/hosts (veja nano e vim).


Quando não funciona

Senha errada
$ sudo apt update
[sudo: authenticate] Senha:
Authentication failed, try again.
[sudo: authenticate] Senha:

O que aconteceu: a senha digitada não confere. Como nada aparece na tela, é fácil errar uma letra.

Como resolver: digite devagar; confira o Caps Lock e o layout do teclado. Lembre que é a sua senha de login.

Usuário sem permissão de sudo
$ sudo apt update
[sudo: authenticate] Senha:
sudo: I'm sorry joao. I'm afraid I can't do that

O que aconteceu: o usuário joao não está no grupo sudo. A mensagem é uma brincadeira dos programadores com o filme 2001: Uma Odisseia no Espaço.

Como resolver: um administrador precisa adicioná-lo: sudo usermod -aG sudo joao (veja Usuários e Grupos). O joao precisa sair e entrar de novo na sessão para valer.

"Permissão negada" mesmo com sudo

O que aconteceu: quase sempre é a armadilha do redirecionamento (sudo echo … > arquivo), explicada acima.

Como resolver: use | sudo tee arquivo ou abra o arquivo num editor com sudo.

Arquivos da pasta pessoal viraram do root
$ ls -l ~/notas.txt
-rw-r--r-- 1 root root 120 Oct 15 10:40 /home/ana/notas.txt
$ echo "mais uma" >> ~/notas.txt
bash: /home/ana/notas.txt: Permissão negada

O que aconteceu: o arquivo foi criado com sudo (por exemplo, sudo nano ~/notas.txt), então o dono virou root.

Como resolver: devolva para você: sudo chown ana:ana ~/notas.txt. E evite usar sudo dentro da sua pasta pessoal.


Referência de opções

OpçãoDescriçãoExemplo
(nenhuma)Roda o comando como rootsudo apt update
-iAbre um shell de login como rootsudo -i
-sAbre um shell como root, mantendo a pasta atualsudo -s
-u usuárioRoda como outro usuáriosudo -u www-data ls
-lLista o que você pode rodarsudo -l
-kEsquece a senha lembradasudo -k
-vRenova os 15 minutos sem rodar nadasudo -v
-nNunca pede senha; falha se precisarsudo -n true

Para editar quem pode usar sudo, use sempre sudo visudo, que confere a sintaxe antes de salvar. Um erro em /etc/sudoers pode deixar todos sem sudo.


Exercícios

1. Repetir com sudo

Você rodou apt update e esqueceu o sudo. Complete com o atalho:

sudo

2. Gravar num arquivo do sistema

Complete para acrescentar a linha ao /etc/hosts:

echo "10.0.0.5 nas" | sudo /etc/hosts

3. Shell de root

Complete para abrir um terminal como root:

sudo

4. Que senha o sudo pede no Ubuntu?

5. Por que sudo echo "x" > /etc/teste dá "Permissão negada"?


Resumo

  • sudo comando roda um comando como root, pedindo a sua senha, que não aparece ao digitar.
  • A senha fica lembrada por 15 minutos; sudo -k esquece.
  • sudo !! repete o último comando com sudo; sudo -i abre um shell de root (saia com exit).
  • Para gravar em arquivo do sistema: … | sudo tee -a arquivo.
  • Use sudo só quando precisar, e nunca dentro da sua pasta pessoal.