Inicie sesión como usuario no root en la terminal

18

Esta es una pregunta que esperaría recibir rápidamente una respuesta de Google. Sin embargo, de alguna manera Google me está fallando. Supongamos que he iniciado sesión en una sesión de terminal y me gustaría trabajar temporalmente como otro usuario no root cuya contraseña conozco sin salir de mi sesión. Cuando inicie sesión como este usuario, quiero que el directorio de inicio, etc., para este usuario esté configurado correctamente hasta que cierre sesión. ¿Cómo puedo hacer eso?

Lo intenté

su -- username

y luego tecleando la contraseña, no produjo ningún error, pero no vi cambios visibles en el símbolo del sistema, todavía diría myname @ myhost. El directorio de inicio también era el de myname y no el nuevo inicio de sesión con el que intenté iniciar sesión.

Soy, como es evidente ahora, bastante inexperto en Linux / Ubuntu, por lo que cualquier información es bienvenida.

Andrew Savinykh
fuente

Respuestas:

18

¿A qué usuario desea cambiar?

El problema es que está intentando "su" en un usuario que no tiene un shell asignado. La mayoría de los usuarios, como mysql, pulse, etc., creados por el sistema o por algunos paquetes al instalar el software no tienen un shell asignado.

Puede verificar si un usuario tiene un shell asignado mirando el /etc/passwdarchivo, solo mire el final de la línea de cada usuario, si dice /bin/falseque significa que no tiene un shell asignado, si tiene algo como /bin/basho cualquier otro shell, entonces deberías poder "su" en ese usuario.

Cuando digo "shell asignado" básicamente significa que tiene "acceso shell"

aun así, si el usuario no tiene acceso de shell, siempre puede ejecutar comandos como ese usuario con

 sudo -u user command
Sam
fuente
aun así, si el usuario no tiene acceso de shell, siempre puede ejecutar comandos como ese usuario con "sudo -u user command"
Sam
Agregue -s /bin/basha su sucomando o use chsh -u username -s /bin/bashpara cambiar el shell de un usuario. Tenga cuidado con las implicaciones de seguridad que esto podría tener.
gertvdijk
7

si tienes acceso a sudo, te recomendaría

sudo su username -

Básicamente hace lo mismo, pero solo requiere que sepas tu contraseña, no los otros usuarios.

sin embargo, si tiene la contraseña de otros usuarios:

su username - debería funcionar bien.

observe el 1, y que está al final.

coteyr
fuente
De alguna manera, las dos formas que describiste se comportan exactamente como las mías: el comando se acepta sin error, pero el directorio de inicio no es correcto y el mensaje dice que sigo siendo el usuario original. Si cierro sesión después de eso, cierro sesión por completo.
Andrew Savinykh
Ok, ¿el usuario está iniciando sesión para poder iniciar sesión? Puede bloquear el inicio de sesión de la cuenta estableciendo su shell en "verdadero" y eso hará exactamente lo que usted describe. Esto solía usarse mucho en la cuenta "sistema" como "apache" y "ftp". Para verificar sudo cat /etc/passwdNO PEGUE EL CONTENIDO AQUÍ. Solo mire el ojo y asegúrese de que el usuario tenga un shell real como el último pedacito de su línea.
coteyr el
1
nota al margen, la forma más adecuada de hacer esto es establecer un shell en "falso" que arrojará un error. Aunque algunos sistemas y cuentas todavía se usan como verdaderos por razones técnicas o de seguridad psíquica (para agravar los mocos de los hackers)
coteyr