22 votos

Iniciar sesión como usuario no root en el terminal

Esta es una pregunta que esperaría obtener rápidamente una respuesta de Google. Sin embargo, de alguna manera Google me está fallando. Supongamos que estoy conectado a 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 esté conectado como este usuario quiero que el directorio de inicio, etc, para este usuario se configure correctamente hasta que cierre la sesión. ¿Cómo puedo hacerlo?

He intentado

su -- username

y luego tecleando la contraseña, no produjo ningún error pero no vi ningún cambio visible del símbolo del sistema, seguía diciendo mi nombre@mihost. El directorio de inicio también era el de myname y no el nuevo login con el que intenté entrar.

Soy - como es evidente ahora - bastante inexperto en linux/Ubuntu, así que cualquier información es bienvenida.

22voto

ebo Puntos 5435

¿A qué usuario quieres cambiar?

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

Puedes comprobar si un usuario tiene asignado un Shell mirando en el /etc/passwd sólo hay que mirar al final de la línea de cada usuario, si dice /bin/false significa que no tiene asignado un Shell, si tiene algo como /bin/bash o cualquier otro Shell, entonces debería ser capaz de "su" en ese usuario.

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

Aún así, si el usuario no tiene acceso a Shell, siempre puede ejecutar comandos como ese usuario con

 sudo -u user command

0 votos

Aún así, si el usuario no tiene acceso a Shell, siempre se pueden ejecutar comandos como ese usuario con "sudo -u usuario comando"

1 votos

Añada -s /bin/bash a su su o utilizar chsh -u username -s /bin/bash para cambiar el Shell de un usuario. Tenga cuidado con las implicaciones de seguridad que esto puede tener.

10voto

coteyr Puntos 6419

si tienes acceso sudo entonces te recomendaría

sudo su username -

Hace básicamente lo mismo, pero sólo requiere que conozcas tu contraseña, no la de los demás usuarios.

Sin embargo, si tienes la contraseña de los otros usuarios:

su username - debería funcionar bien.

fíjate en el 1 - y en que está al final.

0 votos

De alguna manera las dos formas que has descrito se comportan exactamente igual que la mía: el comando es aceptado sin error pero el directorio de inicio no es el correcto y el prompt dice que sigo siendo el usuario original. Si hago el logout después de eso se cierra la sesión por completo.

0 votos

Vale, ¿el usuario con el que te conectas tiene permiso para conectarse? Puedes bloquear la cuenta para que no se conecte estableciendo su Shell en "true" y eso hará exactamente lo que describes. Esto solía usarse mucho en cuentas de "sistema" como "apache" y "ftp". sudo cat /etc/passwd NO PEGUES EL CONTENIDO AQUÍ. Sólo hay que echar un vistazo y asegurarse de que el usuario tiene un verdadero Shell como la última parte de su línea.

1 votos

Nota al margen, la forma más adecuada de hacer esto es establecer un Shell a "false" que lanzará un error. Aunque algunos sistemas y cuentas todavía usan true por razones técnicas o de psudo-seguridad (para agravar los mocos de los wana-be-hackers)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: