Internet, Informática e Tecnologia

Alterar usuário no Linux a partir do Terminal

Linux mudar de usuário

Quando utilizamos o Terminal no Linux, o mais comum é que estejamos conectados a um usuário sem muitos privilégios, e em muitos casos surge a necessidade de utilizar o usuário root. Portanto, utilizamos “sudo” para obter um pouco de mágica, e o problema é que se quisermos utilizá-lo diretamente em sistemas mais modernos, o login root fica desabilitado. Também pode ser simplesmente que precisamos alternar entre diferentes usuários para preservar as permissões de pastas e arquivos cada vez que executamos comandos. Estas etapas se aplicam a qualquer distribuição Linux, incluindo Debian, Ubuntu, Manjaro, etc.

Diferentes maneiras de mudar de usuário

Para alterar o usuário você usará o comando su. A maneira como funciona é simplesmente executar um Shell interativo com o novo usuário como se fosse ele. Também pode ser usado para executar comandos com outro usuário sem trocar de usuário.

Mude de qualquer usuário

Quando já estamos utilizando outro usuário sem tantos privilégios, o ideal é utilizar o comando su.

Para alterar o usuário root nós executamos.

su root

Mesmo se deixarmos o comando su sem argumentos, assume-se que o usuário é raiz.

Em seguida, ele nos pedirá a senha do root e iremos acessá-la automaticamente. Não poderia ser mais simples, por exemplo, se esquecermos de selecionar a opção de recuperação desde o início, agora não precisaremos mais reiniciar o computador, basta abrir o terminal e digitar o comando anterior.

Nota: se ao tentar entrar como raiz obtemos o seguinte erro.
su: Falha de autenticação
Devemos continuar com o método de recuperação encontrado posteriormente nesta página, ou simplesmente usar sudo. Isso é comum em sistemas como o Ubuntu, onde está desabilitado por padrão.

Deve-se destacar que funciona com qualquer usuário e não apenas com root.

su usuário

Neste último caso, solicita-nos a senha do “usuário” caso não tenhamos privilégios.

Mude com usuários que tenham privilégios de administrador

O normal é um usuário típico do Ubuntu após sua instalação. Usaremos o seguinte comando caso estejamos usando Ubuntu com um usuário limitado pelo comando sudo, para poder acessar o root:

sudo su -

Para acessar qualquer outro usuário sem usar a senha do outro usuário, em vez de usar a nossa própria senha:

sudo su usuario

Mude o usuário com o diretório atual:

Quando usamos o comando su de forma simples, o diretório de trabalho atual do Shell será aquele que tínhamos antes de executar o comando e em muitos casos não é o ideal. Por exemplo, se quisermos mudar para o usuário hector, é mais lógico que também precisaríamos mudar para a casa de hector em /home/hector. Temos duas opções.

Alterar diretório automaticamente

Podemos conseguir isso com o comando su e a opção -.

su - usuário

As opções -, -l e --login são equivalentes. O que essa opção faz é utilizar o mesmo ambiente como se fosse um login, inclusive utiliza o Shell padrão deste usuário.

Alterar diretório manualmente

Se não conseguirmos memorizar a opção --login, podemos fazê-lo manualmente.

su usuário
cd ~

Execute o comando com outro usuário

Para executar um comando com um usuário diferente do terminal, usamos a opção --command do comando su.

su usuário --command="echo 'OK'"

Deve-se esclarecer que o ideal é escapar dos caracteres necessários para não interferirem, isso se deve à forma como as aspas funcionam nos Shell. Também recomendo especificar o Shell a ser usado com a opção --shell para evitar problemas de sintaxe. Por exemplo, no Manjaro o Shell padrão é ZSH e quando executamos um comando tão simples como wget https://example.com/ download?file dará erro porque alguns caracteres como o ponto de interrogação ?, que precisam ser escapados com uma diagonal. Pelo contrário, se simplesmente usarmos o bash, já sabemos como vai se comportar e que não, não preciso escapar de tantos caracteres.

su usuário --shell=bash --command="echo 'OK'"

Execute o script com outro usuário

A mesma opção --command é usada, mas especificamos o Shell diretamente. Não é necessário usar a opção --login, mas recomendo para as variáveis ​​de ambiente.

su - usuário --command="/usr/bin/bash /home/usuário/script.sh"

Mude para root com inicialização em “Modo de recuperação” ou “Recovery mode”

Em primeiro lugar, no caso do “root”, não podemos esquecer que podemos entrar no modo de recuperação. Normalmente é a segunda opção ao iniciar no menu de inicialização, por isso entramos diretamente como “root”.

Para sair do usuário

Para retornar ao usuário principal basta usar o comando exit.

exit

Basta ter cuidado, ao utilizar uma conexão SSH, para não executá-la com nosso usuário principal, pois a conexão será fechada.

Como saber quem é meu usuário atual

Resolvi compartilhar isso porque com minha pouca experiência em Linux percebi que usar root é muito necessário, e depois de alguns meses descobri que era possível com muita facilidade sem o uso do “sudo”. Também no caso de gerenciar vários usuários, como quando se executam várias instalações de páginas da web no mesmo servidor.

Para descobrir qual usuário estamos usando atualmente, executamos o comando whoami e ele aparecerá. Também podemos saber qual usuário estamos usando verificando o prompt do terminal, logo antes da arroba, o formato é usuário no sistema, mas em alguns sistemas pode ser muito personalizado e não o exibis.

comando WhoAmI

Diferenças entre os comandos sudo e su

sudo executa apenas um comando com privilégios de root, ele não altera o Shell interativamente. É limitado a usuários com privilégios de administrador ou membros do grupo de adm. Seu uso indiscriminado pode causar alteração nos proprietários de arquivos e pastas.

su inicia um Shell interativo com o usuário fornecido, independentemente de sermos membros do grupo adm. Se não tivermos permissões, simplesmente serão solicitadas as credenciais do usuário necessário. A exceção é que, se usarmos a opção --command, o comando será executado e a saída será retornada.

Opções de comando su

Opção Descrição
-c, --command= Com esta opção um comando é executado com o usuário especificado e a saída é retornada.
-f, --fast Com esta opção você passa -f para o Shell.
-g, --group= O grupo primário é especificado apenas para o usuário root.
-G, --supp-group= Um subgrupo é estabelecido apenas para o usuário root.
-, -l, --login Com esta opção as mesmas variáveis ​​de ambiente são utilizadas como se fosse um login.
-m, -p, --preserve-environment Todo o ambiente do usuário atual é preservado no novo Shell.
-P, --pty Um pseudo terminal é criado para a sessão.
-s, --shell= O Shell a ser utilizado é especificado, ignorando o padrão. Se o Shell não existir ou for restrito, a opção será ignorada.
--session-command= É o mesmo que --command, mas sem criar uma nova sessão. Não recomendado.
-w, --whitelist-environment= Normalmente, as variáveis ​​de ambiente são limpas com --login, com esta lista de permissões você estabelece quais variáveis ​​não limpar. Por exemplo, PATH.
-h, --help A ajuda do comando é exibida com essas opções listadas.
-V, --version A versão é exibida.

su help

Exemplos reais

Estes são alguns casos que precisamos resolver:

  • No desktop Debian precisamos realizar uma tarefa a partir do Terminal, mas para isso precisamos utilizar o usuário root.
  • No desktop Ubuntu precisamos realizar uma tarefa administrativa a partir do Terminal, neste caso podemos usar o comando “sudo”, mas fica chato quando temos muitas coisas para fazer, e o que é necessário é usar root.
  • Estamos logados como root, mas precisamos rodar o “composer” com o usuário do projeto ou pasta.

Problemas de segurança

Embora seja bastante útil, deve ser usado com moderação e apenas em casos estritamente necessários. Pessoalmente, mudei acidentalmente o proprietário e o grupo de todas as pastas do sistema com o comando chown usando “root” indiscriminadamente, fazendo com que minha instalação do Ubuntu parasse de funcionar completamente, a única solução foi reinstalar tudo e recuperar os dados manualmente diretamente do disco. Este é apenas um caso e foi num computador pessoal, o detalhe é que também pode acontecer conosco num servidor web de produção ou em qualquer servidor crítico. O comando chown -hR estava, no meu caso, em outro mais sério poderia ser rm -rf.

Categorías
Etiquetas

Conteúdo semelhante