Respostas:
Que tal usar o su
comando?
$ 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; o -u
sinalizador 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.
su - [user]
pode ser útil - o traço extra fornece um shell de login.
echo >>/dev/stderr
em um login com su --login ...
alguma dica? Eu encontrei este btw unix.stackexchange.com/questions/38538/…
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.
Geralmente você usa sudo
para iniciar um novo shell como o usuário que você deseja; o -u
sinalizador 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 sudo
provavelmente é mais simples se estiver instalado e você tiver permissão para usá-lo.
sudo -s
dá-lhe um shell como su
, sudo -i
simula o login como su -
. Pode ser combinado com -u $user
, é claro.
$ 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
.
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.
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 mongodb
usuário. Ao implantar um cluster MongoDB fragmentado, todos os processos necessários devem ser executados mongodb
e não é necessário (ou inteiramente conveniente) daemonizar os processos usando scripts init para dezenas de nós.
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.
Se você precisar executar apenas um único comando, poderá usar o sudo:
sudo -u username command
~$ 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!
$XDG_RUNTIME_DIR
em particular) que estavam me deixando louco. -> unix.stackexchange.com/questions/354826/…