Como alternar entre usuários em um terminal?


Respostas:


562

Que tal usar o sucomando?

$ 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 sudopara iniciar um novo shell como o usuário que você deseja; o -usinalizador 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 tem 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.


17
Além disso, su - [user]pode ser útil - o traço extra fornece um shell de login.
ephemient 27/10/10

Estou recebendo este erro "-su: / dev / stderr: permissão negada" após executar este comando echo >>/dev/stderrem um login com su --login ...alguma dica? Eu encontrei este btw unix.stackexchange.com/questions/38538/…
Aquarius Power

Isso permite que cada novo usuário tenha valores diferentes e superiores para variáveis ​​de ambiente? por exemplo, git config for work, open source, etc.
Kevin Suttle

Uma constatação, quando listei o artigo env, vi que tudo estava em ordem, assim como uma inspeção visual pode ser executada; E uma coisa estava errada: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on arquivo ~ / .Xauthority` é: -rw-------. Fiz uma cópia e isso me permitiu executar o gedit como um experimento.
vai

1
se você receber "Esta conta não está disponível no momento": su -s / bin / bash - www-data
max4ever 15/03

46

Geralmente você usa sudopara iniciar um novo shell como o usuário que você deseja; o -usinalizador permite especificar o nome de usuário que você deseja:

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

Existem maneiras mais tortuosas se você não tiver acesso ao sudo ssh username@localhost, mas acho que sudoprovavelmente é mais simples se estiver instalado e você tiver permissão para usá-lo.


E se meu sistema não tiver servidor ssh ou sudo? Você pode mencionar essa parte na resposta?
tshepang

ok, Pratt respondeu que #
tshepang 27/10/10

4
sudo -sdá-lhe um shell como su, sudo -isimula o login como su -. Pode ser combinado com -u $user, é claro.
ephemient 27/10/10

muito mais eficiente. poder "logar" como um usuário que normalmente não pode logar é um grande trunfo ..! totalmente me permitiu executar uma instância de banco de dados sem mexer com permissões ou selinux
Félix Gagnon-Grenier

20
$ 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 o usuário especificado (que você pode verificar executando novamente whoami.


Útil se você não é sudoer.
Marco Sulla

15

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 exige que seu usuário tenha direitos para obter privilégios de root sudo.


8

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 com a tecla 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 iniciar uma nova sessão de terminal e estar automaticamente no login de 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 alguma 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.



2

Ainda 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 mongodbusuário. Ao implantar um cluster MongoDB fragmentado, todos os processos necessários devem ser executados mongodbe não é necessário (ou inteiramente conveniente) daemonizar os processos usando scripts init para dezenas de nós.


2

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ê não deseja deixar o shell atual do UsuárioA, 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, basta:

sudo su - UserB

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


1

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


-1
~$ sudo login

Em seguida, será solicitada a senha do sudo (a senha do usuário atualmente conectado).

Além disso: verifique se o usuário atual está no arquivo sudoers!


2
A pergunta era sobre o login como um usuário diferente.
Minix 27/05
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.