O comando su – substituição de usuários no Linux

Comando su

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.

Como usar o comando su

Sintaxe

su [opções] [comandos] - [nome_usuário]

A forma mais simples é usando o comando su sem nenhum parâmetro:

$ su

comando su no linux

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

Comando su no Linux terminal

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

substituir usuário com su no linux

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

trocar usuário no linux com su

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:

como trocar de usuário no linux com comando su

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 -

mudar de usuário no linux com 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

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:

substituir usuário no linux com comando su

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.

Você também pode assistir a um vídeo sobre o assunto no canal do YouTube Bóson Treinamentos:

Até!

Sobre Fábio dos Reis (1349 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

1 Comentário em O comando su – substituição de usuários no Linux

  1. Embora pareça, ISSO NÃO É FALHA DE SEGURANÇA. No site do projeto GNU há orientação de como configurar senha no GRUB. Procurem no youtube por “Como impedir que quebrem senha de root do Linux (Colocando senha no GRUB)” usando aspas para achar o certinho. Atentem para o parâmetro –unrestricted, pois sem ele o usuário necessitaria saber a senha do grub para iniciar o sistema (o que invalidaria o método de proteção). Implementar autenticação no GRUB é importante para ambientes em que várias pessoas tem acesso aos desktops como escolas, empresas, bibliotecas, etc. O vídeo citado contem links para tutorial escrito, e o site do GNU com explicação técnica é https://www.gnu.org/software/grub/manual/grub/html_node/Authentication-and-authorisation.html

Escreva um comentário

Seu e-mail não será divulgado


*