Fiz uma pergunta semelhante, porque tive problemas com variáveis de ambiente XDG ( $XDG_RUNTIME_DIRem particular) que estavam me deixando louco. -> unix.stackexchange.com/questions/354826/…
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.
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:
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.
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.
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.
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.
$XDG_RUNTIME_DIR
em particular) que estavam me deixando louco. -> unix.stackexchange.com/questions/354826/…Respostas:
Que tal usar o
su
comando?Se você deseja fazer login como root, não há necessidade de especificar o nome de usuário:
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: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.fonte
su - [user]
pode ser útil - o traço extra fornece um shell de login.echo >>/dev/stderr
em um login comsu --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:Existem maneiras mais tortuosas se você não tiver acesso ao sudo
ssh username@localhost
, mas acho quesudo
provavelmente é mais simples se estiver instalado e você tiver permissão para usá-lo.fonte
sudo -s
dá-lhe um shell comosu
,sudo -i
simula o login comosu -
. Pode ser combinado com-u $user
, é claro.Este comando imprime o usuário atual. Para alterar usuários, teremos que usar este comando (seguido da senha do usuário):
Após digitar a senha correta, você efetuará login como o usuário especificado (que você pode verificar executando novamente
whoami
.fonte
Se você estiver executando o Ubuntu e se o usuário que você deseja fazer login como não tiver uma senha definida:
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
.fonte
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:
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.
fonte
sudo -iu <your_username>
para mim fazer o truquefonte
Ainda outra rota é lançar um novo shell como um usuário diferente (não raiz) para executar comandos como esse usuário.
Um exemplo disso é o
mongodb
usuário. Ao implantar um cluster MongoDB fragmentado, todos os processos necessários devem ser executadosmongodb
e não é necessário (ou inteiramente conveniente) daemonizar os processos usando scripts init para dezenas de nós.fonte
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:
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:
Se você preferir fazer login temporariamente como UserB para executar muitos comandos, basta:
Isso fornecerá um novo shell para o UserB (verifique isso digitando id). Quando terminar, você pode pressionar ctrl-d e retornar ao seu login.
fonte
Se você precisar executar apenas um único comando, poderá usar o sudo:
sudo -u username command
fonte
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!
fonte