Como funciona o "sudo" no Linux - Entendendo o principal

Sim, eu sei que eu disse que não ia mais fazer esse tipo de post mas o relato da @Ana_Paula me motivou a continuar

Então, se segura que hoje, um dos se não o, comando mais usado vai ser destrinchado

O básico

O nome:

Ao contrário do que muita gente pensa, sudo, não tem nada a ver com Super User DO, mas sim de Substitute User DO, ou em português: Usuário Substituto, Faça

Pra que serve?

Como o nome indica, serve pra executar o comando como outro usuário, só que com um detalhe especial, ao invés de digitar a senha do usuário que vai executar o comando, a senha usada é a do usuário que rodou o comando

Como se usa (por padrão)

Considere o comando:

apt update

Pra usar o sudo, basta colocar “sudo” antes seguido do comando:

sudo apt update

O uso por padrão define que você quer se o comando seja executado assim:

  • Usuário sendo o root
  • Variáveis ambiente redefinidas (exceto algumas)
  • Pasta pessoal sendo a do root
  • Grupo como sendo “root”

Agora vamos ver como se modifica esse comportamento agora

O não tão básico

Assim como a maioria dos comandos o sudo suporta opções e essas opções modificam o comportamento do sudo pra simplificar, eu vou dividir em duas partes: agrupáveis e não agrupáveis

Agrupáveis

Essas opções você pode colocar vários de uma vez só sem colocar espaço, basicamente coloque um - e coloque as letras correspondentes, por exemplo, se você quer usar as opções E e H, ao invés de fazer -E -H você pode, opcionalmente, fazer -EH:

Parâmetro O que faz
E Preserva as variáveis de ambiente do usuário que rodou o sudo, inclusive a que define a pasta pessoal
H Faz com que a pasta pessoal seja a do usuário que vai executar o comando, geralmente só é útil se E for usado
P Faz com que os grupos do usuário que rodou o comando sejam passados temporariamente ao usuário que vai rodar o comando
S Lê a senha a partir de uma encanação ou de um arquivo
i Simula um login, se o shell do terminal do usuário usar o bash por exemplo, o arquivo .profile e .bashrc serão lidos e os comandos neles serão executados

Nota sobre S:


A opção de encanamento:

echo "sua senha" | sudo -S comando

Expõe sua senha a outros processos, sendo assim a opção preferível é ler a partir de um arquivo

sudo -S comando < "/caminho/pro/arquivo/com/a/senha.txt"

Não agrupáveis

Esses comandos você precisa colocar separadamente e precisa especificar um valor, por exemplo, para usar -u junto com E e H você usa ela assim por exemplo: -EH -u flakboy

Parâmetro O que faz
-u Especifica outro usuário pra executar o comando
-g Especifica o grupo do qual o usuário que vai executar vai pertencer temporariamente
-p Especifica a mensagem que aparece, se você passou a opção S convém usar -p "" pra cortar caracteres desnecessários na tela

Não se esqueça do -antes de cada opção

Dicas extras

  • Por padrão o sudo permite que caso você use o sudo novamente em 30 min após uma utilização, ele seja executado sem pedir senha para o mesmo usuário, você pode impedir isso rodando sudo -K, porém se o computador faz parte de uma repartição pública (tipo uma escola) além de ser necessário rodar isso, também é tedioso, você pode habilitar esse comando pra todas as vezes que você rodar o sudo, colocando isso no final do arquivo /etc/bash.bashrc:

Melhoria feita pelo @Capezotte

function sudo(){
  env sudo "${@}"
  sudo -k
}

Esse truque impede engraçadinhos de tentar explorar esse recurso do sudo, é meio inútil em casa, reativar esses 30 min sem desativar a dica, rode env sudo

  • Passe -i sem nenhum comando pra simular um login no usuário em uma sessão do terminal, isso torna o sudo similar ao su, porém você vai fazer login usando a sua senha ao invés da senha do usuário

Fonte: man sudo

21 Curtidas

Muito legal!
Obrigada por compartilhar :heart:!!!

5 Curtidas

Muito bom.

Sugestão

Seria legal adicionar sobre su

Su não é sudo.

Já vi muita gente achando que era a mesma coisa.

4 Curtidas

Vou fazer, é o próximo inclusive

2 Curtidas

Obrigado, foi seu relato que me motivou a postar novamente

4 Curtidas

Show!
Estou fazendo um trabalho para o curso que, em um dos tópicos, fala para explicarmos sobre o sudo. Já me deu o pulo do gato ai =D, valeu!

4 Curtidas

Sempre achei sudo = su, obrigado por compartilhar.

3 Curtidas

Dois adendos:

  • Os 30 minutos também podem ser reativados no terminal atual com unset -f sudo. Agora digitar sudo vai dar, novamente, os 30 minutos.

  • O sudo vem com o programa visudo, que permite você editar a configuração do sudo, e avisa se você errou alguma coisa. É útil para a dica a seguir:
  • Pode-se mudar ou mesmo remover definitivamente a tolerância de 30 minutos indo /etc/sudoers e colocando a linha: Defaults timestamp_timeout=MINUTOS. Troque MINUTOS pela duração (em minutos) que você quer que dure a tolerância (por exemplo, 0).
7 Curtidas

O pessoal aqui está animado pra escrever. Parabéns pelo material!

3 Curtidas

Exatamente, eu só preferi algo mais simplificado e plug and play

1 Curtida

Nossa muito legal Natanael.755 eu realmente consegui entender direitinho. O senhor (e muita gente aqui do grupo) possui uma didática incrível!

Isso foi bem esclarecedor. Agora acho que entendo. No meu computador atualmente só consigo instalar coisas e atualizar no modo “root”. Acho que isso significa que não preciso usar o comando “sudo”, afinal, não é necessário “forçar” o comando né?..

Para atualizar por exemplo eu faço apenas: [root@Arch ~]# pacman -Syu

Ps.: Muito obrigada por se lembrar de mim, mas… que relato rsrsrs?:thinking:

2 Curtidas

Pode fazer a atualização com sudo também, com sudo pacman -Syyuu

Já com Flatpaks não se deve usar sudo, nem para instalar nem para atualizar

3 Curtidas

Oi Rodrigo_Chile! Tudo bem contigo? :v: :grin: :v:
Então, me disseram para nunca usar este comando sudo pacman -Syyuu porque ele atualiza a raiz do sistema, o kernel, e pode dar incompatilidade com meus arquivos (acho que foi isso)…
Eu estranhei pq o Arch justamente é rolling release, se eu não puder atualizar o sistema qual a graça rsrsrs? Posso rodar este comando então?

2 Curtidas

Não, não… para atualizar as distros baseadas em Arch, pode usar esse comando sim, é o recomendado

2 Curtidas

5 postagens foram divididas em um novo tópico: Snaps, Flatpacks ou AppImage oferecem algum risco ao sistema?

Certo. Pode deixar então. Obrigada!

2 Curtidas

Lendo e transcrevendo vão surgindo dúvidas rsrsrs.

Este “i” é sempre minúsculo mesmo?

Não entendi muito bem… O que é encamento? Ele faz parte do parâmetro S mas nunca tinha ouvido falar neste termo rsrsrs.

Eu já ia perguntar qual a diferença entre “sudo” e “su” eu podia jurar que era a mesma coisa :sweat_smile: :joy: :joy: Mas agora vou jogar no man su e comparar com o que o senhor escreveu neste postagem! Beeem mais tranquilo e fácil assim!

1 Curtida

Sim, no Linux parâmetros são case sensitive, isso significa que eles diferenciam maiúsculas de minúsculas

Encanamento é você colocar um | entre os comandos, é como se a saída do comando a esquerda fosse “canalizado” para o da direita

Exatamente, a menos que você não queira usar o usuário root por qualquer motivo

Você não precisa anotar tudo, o fórum tem um recurso pra você salvar o que achar interessante:

7 Curtidas

Muito obrigada pelas explicações Natanael.755!

Caramba eu nunca imaginar que isso existia :see_no_evil: :joy: :joy: muito obrigada!
Mas eu tenho que anotar, pq infelizmente não fico o tempo que gostaria com o computador estudando, então, vou anotando em folha sulfite, depois passo a limpo em um caderno para estudar e por fim, faço uns cartõezinhos como os de Yu Gi Oh! ou Magic, aí fico lendo na cama até bater o sono rsrsrsrs. Dá um pouco de trabalho mas eu gosto rsrsrs.

3 Curtidas

@swatquest @hiyan @xande @Ana_Paula

Acabei de fazer o artigo sobre o su:

5 Curtidas