Comando su – Trocando o usuário na linha de comandos – LPIC 1
Comando su – Trocando o usuário na linha de comandos do Linux – LPIC 1
O comando su (“substitute user”) permite alterar o proprietário de uma sessão de login sem que o usuário atual tenha de efetuar logout do sistema.
O comando su permite mudar o proprietário de uma sessão para qualquer usuário, mas é geralmente usado para mudar de um usuário comum para o usuário root, fornecendo assim acesso a todos os comandos e arquivos do computador.
Usando o comando su evitamos a necessidade de usar o sistema como usuário root o tempo todo, de modo que há uma grande diminuição no risco associado a essa prática, pois ao nos logarmos como usuário comum, que possui diversas restrições de privilégios, o potencial de danos acidentais ou maliciosos diminui bastante.
Em um sistema multiusuário devemos relegar o uso da conta root, e mesmo do comando su, ao mínimo necessário, principalmente se tivermos acesso à Internet.. Desta forma é muito mias difícil que um software malicioso tenha acesso a arquivos e serviços de sistema críticos, os quais geralmente pertencem ao usuário root.
Quando usamos o comando su no modo de console a sessão original do usuário logado não pode ser usada na mesma máquina simultaneamente – pois a sessão de console ocupa a tela toda (a não ser que uma nova sessão de console seja aberta com Alt + Fn). Porém, ao usarmos o su em uma janela de terminal (emulador), apenas essa janela de terminal – e os programas iniciados a partir dela – serão executados com a nova conta de usuário (ex.: root); todos os demais programas continuarão rodando com a conta do usuário original, incluindo novas janelas de terminal.
Usando o comando su
Sintaxe:
su [opções] [comandos] – [nome_usuário]
A forma mais simples é usando o comando su sem nenhum parâmetro:
$ su
Se não passarmos nenhum parâmetro ao comando su, o sistema assumirá que queremos nos logar como usuário root, como no exemplo acima. Podemos obter o mesmo efeito com o comando su root
Para alterar o proprietário da sessão atual (usuário logado) para outro usuário, simplesmente digite su seguido do nome do novo usuário:
$ su fernanda
Note que em ambos os casos é necessário digitar a senha do usuário que deseja logar-se.
Para encerrar a sessão iniciada com o su e voltar ao usuário original, basta emitir o comando exit:
$ exit
Ou ainda o comando logout (caso tenha usado o su -) ou ainda pressionar as teclas Ctrl + d.
Para confirmarmos que o usuário realmente está logado, ou saiu de sua sessão, podemos emitir o comando whoami:
# whoami
Note que alguns shells, como o bash, trazem essa informação no próprio prompt.
O comando su, por padrão, mantém o diretório atual e as variáveis de ambiente do usuário original, não alterando esses parâmetros para o novo usuário. Note nos exemplos anteriores que, apesar de termos mudado o usuário de fabio para root e também para fernanda, o diretório home que é mostrado no prompt continuou sendo sempre o do usuário que fez login originalmente no sistema – o usuário fábio.
Isso pode ser um problema pois, por exemplo, se um programa residir em um diretório que só é referenciado na variável de ambiente PATH do root, e não na do usuário original (fábio no nosso exemplo), teremos de digitar seu caminho completo, caso contrário o comando não será encontrado.
Veja na figura a seguir como, ao mudarmos o usuário de fabio para root o diretório home continua sendo o do fabio:
Para evitar esse e outros problemas que possam ocorrer por conta desse comportamento padrão do comando su, devemos usar o comando seguido de um espaço e um hífen, como a seguir:
$ su –
Desta forma, o diretório atual é alterado para o diretório home do usuário que se logou com o su (veja que o diretório mudou para /root no exemplo acima), e as variáveis de ambiente são alteradas também para as do novo usuário.
Podemos também digitar o seguinte para obter o mesmo efeito:
$ su – root
ou
$ su – fernanda
Outras opções do comando su
O comando su não possui muitas opções, como por exemplo:
-c Executar o programa que é digitado logo após o su na mesma linha, com os privilégios do novo usuário, e voltar imediatamente à conta do usuário original após o término da execução do programa.
Vejamos um exemplo: O usuário fabio tentará executar o comando fdisk -l para ver as partições existentes no sistema – porém ele não tem permissão para usar esse comando. Podemos então usar o su -c para executar esse comando e voltar imediatamente à conta de fabio sem ter de mudar para a conta de root:
Note o uso das aspas em torno do comando passado para exibição, e veja também que após sua execução o prompt mostra que o usuário atual é o fabio.
-l Fornece um ambiente similar ao que o usuário esperaria ver caso tivesse se logado inicialmente no sistema.
O comportamento do comando su pode ser alterado configurando-se algumas opções no arquivo /etc/login.defs. Veremos a configuração desse arquivo em um outro artigo.
Assista a um vídeo sobre o assunto no canal do YouTube Bóson Treinamentos:
Excelente, Fábio! Explicação clara e objetiva! Sempre me recorro aos seus artigos para clarear os conceitos e dúvidas!
Obrigado William!
sencaional o conteúdo, bem didatico e me ajudou muito