Efetue login como usuário não root no terminal


18

Esta é uma pergunta que eu esperaria obter rapidamente uma resposta do google. No entanto, de alguma forma, o Google está falhando comigo. Vamos supor que estou logado em uma sessão de terminal e gostaria de trabalhar temporariamente como outro usuário não root cuja senha eu conheço sem sair da minha sessão. Quando logado como esse usuário, desejo que o diretório inicial, etc., seja configurado corretamente até que eu efetue o logout. Como faço isso?

eu tentei

su -- username

e, em seguida, digitando a senha, ela não produziu nenhum erro, mas não vi alterações visíveis no prompt de comando. O diretório inicial também era o do meu nome e não o novo login em que tentei fazer o login.

Eu sou - como é aparente agora - bastante inexperiente no linux / Ubuntu, então qualquer informação é bem-vinda.

Respostas:


18

Para qual usuário você deseja mudar?

O problema é que você está tentando "su" em um usuário que não possui um shell atribuído a ele. A maioria dos usuários, como mysql, pulse, etc, criados pelo sistema ou por alguns pacotes quando você instala o software, não possui um shell atribuído.

Você pode verificar se um usuário tem um shell atribuído, olhando para o /etc/passwdarquivo, basta olhar para o final da linha de cada usuário, se ele indicar /bin/falseque significa que ele não tem um shell atribuído, se tem algo parecido /bin/bashou qualquer outro shell, você poderá "su" nesse usuário.

Quando digo "atribuído ao shell", basicamente significa que ele tem "acesso ao shell"

Ainda assim, se o usuário não tiver acesso ao shell, você sempre poderá executar comandos como esse usuário com

 sudo -u user command

Ainda assim, se o usuário não tiver acesso ao shell, você sempre poderá executar comandos como esse usuário com "sudo -u user command"
Sam

Anexe -s /bin/bashao seu sucomando ou use chsh -u username -s /bin/bashpara alterar o shell de um usuário. Cuidado com as implicações de segurança que isso possa ter.
gertvdijk

6

se você tem acesso sudo, então eu recomendaria

sudo su username -

Faz basicamente a mesma coisa, mas requer apenas que você saiba sua senha e não os outros usuários.

no entanto, se você tiver a senha dos outros usuários:

su username - deve funcionar muito bem.

observe o 1 - e que está no final.


De alguma forma, as duas maneiras que você descreveu se comportam exatamente como as minhas - o comando é aceito sem erros, mas o diretório inicial não está certo e o prompt diz que eu ainda sou o usuário original. Se eu fizer logout depois disso, efetuo logout completamente.
Andrew Savinykh

Ok, o usuário que está acessando tem permissão para fazer login? Você pode impedir o login da conta, configurando o shell para "true" e isso será feito exatamente como você descreve. Isso costumava ser usado muito na conta "system", como "apache" e "ftp". Para verificar sudo cat /etc/passwdNÃO COLOQUE O CONTEÚDO AQUI. Apenas olhe para ele e verifique se o usuário tem um shell real como o último pedacinho da sua linha.
Coteyr

1
observação lateral, a maneira mais adequada de fazer isso é definir um shell como "false", o que gerará um erro. Embora alguns sistemas e ainda responde usar verdade por razões técnicas ou psudo de segurança (para agravar o ranho fora do wana-ser-hackers)
coteyr
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.