Como alternar entre usuários em um terminal?

413

Gostaria de fazer login como um usuário diferente sem sair do atual (no mesmo terminal). Como eu faço isso?

    
por Tshepang 27.10.2010 / 21:38

9 respostas

471

Que tal usar o comando su ?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

Se você quiser fazer login como root, não é necessário especificar o nome de usuário:

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

Geralmente, você pode usar sudo para iniciar um novo shell como o usuário desejado; o sinalizador -u permite especificar o nome de usuário desejado:

$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2

Existem mais caminhos tortuosos se você não tiver acesso ao sudo, como ssh username @ localhost, mas sudo é provavelmente o mais simples, desde que esteja instalado e você tenha permissão para usá-lo.

    
por 27.10.2010 / 21:58
39

Geralmente você usa sudo para iniciar um novo shell como o usuário desejado; o sinalizador -u permite especificar o nome de usuário desejado:

[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody

Existem mais caminhos tortuosos se você não tiver acesso ao sudo, como ssh username@localhost , mas acho que sudo é provavelmente mais simples se estiver instalado e você tiver permissão para usá-lo

    
por 27.10.2010 / 21:41
15
$ whoami 

Este comando imprime o usuário atual. Para mudar de usuário, teremos que usar este comando (seguido da senha do usuário):

$ su secondUser
Password:

Após digitar a senha correta, você estará logado como usuário especificado (o que você pode verificar executando novamente whoami .

    
por 28.07.2014 / 07:50
7

Se você estiver executando o Ubuntu e se o usuário que você deseja efetuar login não tiver uma senha definida:

sudo su - username

Digite sua própria senha e você deve estar definido. Claro, isso requer que seu usuário tenha direitos para obter privilégios de root com sudo .

    
por 11.06.2015 / 08:40
7

Para alternar a sessão do terminal para um usuário diferente, onde esse usuário não pode sair de volta para o usuário original, use exec:

$|# exec su - [username]

Isso fará login tecnicamente no novo usuário em um novo processo de termo e encerrará o atual. Dessa forma, quando o usuário tentar sair ou Ctrl-D, o terminal será fechado como se esse usuário tivesse sido o único que o instanciou, ou seja, o usuário não poderá sair novamente para o termo do usuário original. Inútil, considerando que eles ainda podem apenas iniciar uma nova sessão de terminal e estar automaticamente no login do usuário original, mas aí está.

EDITAR: Por que vale a pena, você pode usar o comando linux vlock em seu ~ / .bashrc para bloquear as sessões de terminal por padrão, exigindo a senha do usuário da sessão de termo para desbloquear. Isso evitaria o reinício do termo mencionado anteriormente sob o contexto do usuário original, dado que o termo não é instanciado usando o ~ / .bashrc não-padrão do usuário, conforme configurado.

    
por 24.10.2014 / 01:51
1

No entanto, outra rota é lançar um novo shell como um usuário diferente (não raiz) para executar comandos como esse usuário.

ubuntu@aws-ip:~$ sudo -u mongodb bash          #<-- or zsh, etc... 
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork

Um exemplo disso é o usuário mongodb . Ao implantar um cluster MongoDB fragmentado, todos os processos necessários devem ser executados como mongodb e não é necessário (ou inteiramente conveniente) para daemonizar os processos usando scripts de inicialização para dezenas de nós.

    
por 28.04.2016 / 17:22
1

sudo -iu <your_username> para mim, faça o truque

    
por 24.05.2016 / 11:17
1

Vamos esclarecer isto: Você está logado como UserA e quer "login" como UserB para executar alguns comandos, mas gostaria de voltar ao UserA quando terminar. Por uma questão de simplicidade, suponho que você queira executar ls -l / tmp como UserB. Se você não quiser sair do shell atual do UserA, mas executar um comando como UserB e ainda permanecer conectado como UserA, faça isso:

su - UserB -c "ls -l /tmp"   <-- Just an example

Isso pressupõe que você saiba a senha do UserB. No entanto, se você não souber a senha do UserB, precisará saber a senha do root. Então:

sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

Se você preferir fazer login temporariamente como UserB para executar muitos comandos, faça o seguinte:

sudo su - UserB

Isso lhe dará um novo shell para UserB (verifique isso digitando id). Quando terminar, você pode fazer ctrl-d e retornar ao seu login.

    
por 07.09.2016 / 09:10
-1
~$ sudo login

Em seguida, ele solicitará a senha do sudo (a senha do usuário atualmente conectado).

Além disso, certifique-se de que o usuário atual esteja no arquivo sudoers!

    
por 27.05.2015 / 17:16

Tags