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 osudo
similar aosu
, porém você vai fazer login usando a sua senha ao invés da senha do usuário
Fonte: man sudo