it-swarm-pt.com

Como alternar entre usuários em um terminal?

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

535
tshepang

Que tal usar o comando su?

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

Se você deseja fazer login como root, não há necessidade de 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 que você deseja; a -u flag permite especificar o nome de usuário que você deseja:

$ whoami
user1
$ Sudo -u user2 zsh
$ whoami
user2

Existem maneiras mais tortuosas 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.

630
Pratt

Geralmente você usa Sudo para iniciar um novo Shell como o usuário que você deseja; a -u flag permite especificar o nome de usuário que você deseja:

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % Sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

Existem maneiras mais tortuosas se você não tiver acesso ao Sudo, como ssh [email protected], mas acho que Sudo provavelmente é mais simples se estiver instalado e você tiver permissão para usá-lo

51
Michael Mrozek
$ whoami 

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

$ su secondUser
Password:

Após digitar a senha correta, você efetuará login como usuário especificado (que pode ser verificado executando novamente whoami.

25
Ashish Saini

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

Sudo su - username

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

17
Sundae

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

$ | # exec su - [nome de usuário]

Tecnicamente, isso fará o login do novo usuário em um novo processo de termo e fechará o atual. Dessa forma, quando o usuário tenta sair ou Ctrl-D, o terminal fecha como se o usuário tivesse instanciado, ou seja, o usuário não pode voltar ao termo original do usuário. Meio inútil, considerando que eles ainda podem simplesmente iniciar uma nova sessão de terminal e estar automaticamente no login do termo de usuário original, mas existe.

EDIT: Para o que vale a pena, você pode usar o comando linux vlock no seu ~/.bashrc para bloquear sessões de terminal por padrão, exigindo a senha do termo user da sessão para desbloquear. Isso impediria de certa forma o termo mencionado reiniciar no contexto original do usuário, dado que o termo não é instanciado usando o ~/.bashrc não padrão do usuário, conforme configurado.

9
SYANiDE

Sudo -iu <your_username> para mim fazer o truque

3
andilabs

Vamos acertar: Você está logado como UsuárioA e deseja "logar" como UsuárioB para executar alguns comandos, mas gostaria de voltar ao UsuárioA quando terminar. Por uma questão de simplicidade, presumo que você deseja executar ls -l/tmp como UsuárioB. Se você deseja não deseja deixar o Shell atual do Usuário A, mas executar um comando como UsuárioB e ainda permanecer conectado como UsuárioA, faça o seguinte:

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

Isso pressupõe que você saiba a senha do UsuárioB. No entanto, se você não souber a senha do UsuárioB, precisará saber a senha raiz. 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:

Sudo su - UserB

Isso fornecerá um novo Shell para usuárioB (verifique isso digitando id). Quando terminar, você pode pressionar ctrl-d e retornar ao seu login.

2
Hopping Bunny

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

[email protected]:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ 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) daemonizar os processos usando scripts init para dezenas de nós.

2
azatar

Se você precisar executar apenas um único comando, poderá usar o Sudo: Sudo -u username command

1
Maksim Luzik