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:

Sobre Fábio dos Reis (1325 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*