it-swarm-es.tech

¿Cómo cambiar entre usuarios en un terminal?

Me gustaría iniciar sesión como un usuario diferente sin cerrar sesión en el actual (en el mismo terminal). ¿Cómo puedo hacer eso?

535
tshepang

¿Qué tal usar el comando su?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

Si desea iniciar sesión como root, no es necesario especificar el nombre de usuario:

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

En general, puede usar Sudo para iniciar un nuevo Shell como el usuario que desee; la -u flag te permite especificar el nombre de usuario que deseas:

$ whoami
user1
$ Sudo -u user2 zsh
$ whoami
user2

Hay formas más tortuosas si no tiene acceso a Sudo, como ssh username @ localhost, pero Sudo es probablemente el más simple, siempre que esté instalado y tenga permiso para usarlo.

630
Pratt

En general, utiliza Sudo para iniciar un nuevo Shell como el usuario que desee; la -u flag te permite especificar el nombre de usuario que deseas:

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % Sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

Hay formas más tortuosas si no tiene acceso a Sudo, como ssh [email protected], pero creo que Sudo es probablemente más simple si está instalado y tienes permiso para usarlo

51
Michael Mrozek
$ whoami 

Este comando imprime el usuario actual. Para cambiar de usuario, tendremos que usar este comando (seguido de la contraseña del usuario):

$ su secondUser
Password:

Después de ingresar la contraseña correcta, iniciará sesión como el usuario especificado (que puede verificar volviendo a ejecutar whoami.

25
Ashish Saini

Si está ejecutando Ubuntu, y si el usuario con el que desea iniciar sesión no tiene una contraseña establecida:

Sudo su - username

Ingrese su propia contraseña y debe estar configurado. Por supuesto, esto requiere que su usuario tenga derechos para obtener privilegios de root con Sudo.

17
Sundae

Para cambiar la sesión de terminal a un usuario diferente, donde ese usuario no puede volver a salir al usuario original, use exec:

$ | # exec su - [nombre de usuario]

Esto técnicamente iniciará sesión en el nuevo usuario en un nuevo proceso de término y cerrará el actual. De esa manera, cuando el usuario intenta salir o Ctrl-D, el terminal se cerrará como si ese usuario fuera quien lo creó, es decir, el usuario no puede volver al término original del usuario. No tiene sentido, teniendo en cuenta que todavía pueden comenzar una nueva sesión de terminal y estar automáticamente en el inicio de sesión del término de usuario original, pero ahí está.

EDITAR: Para lo que vale, puede usar el comando linux vlock en su ~/.bashrc para bloquear sesiones de terminal de forma predeterminada, requiriendo la contraseña del término usuario de sesión para desbloquear. Esto evitaría un poco el reinicio del término mencionado anteriormente en el contexto del usuario original, dado que el término no se instancia usando el ~/.bashrc no predeterminado del usuario, como está configurado.

9
SYANiDE

Sudo -iu <your_username> para mí haz el truco

3
andilabs

Permítanos aclarar esto: ha iniciado sesión como UsuarioA y desea "iniciar sesión" como UsuarioB para ejecutar algunos comandos, pero le gustaría volver a UsuarioA cuando haya terminado. En aras de la simplicidad, supongo que desea ejecutar ls -l/tmp como UserB. Si no desea abandonar el Shell actual de UserA pero ejecuta un comando como UserB y aún permanece conectado como UserA, debe hacer esto:

su - UserB -c "ls -l /tmp"   <-- Just an example

Esto supone que conoce la contraseña para UserB. Sin embargo, si no conoce la contraseña de UserB, debe conocer la contraseña de root. Entonces:

Sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

Si prefiere iniciar sesión temporalmente como UsuarioB para ejecutar muchos comandos, simplemente haga lo siguiente:

Sudo su - UserB

Esto le dará un nuevo Shell para UserB (verifíquelo escribiendo id). Cuando termine, puede hacer ctrl-d y volver a su inicio de sesión.

2
Hopping Bunny

Otra ruta es lanzar un nuevo Shell como un usuario diferente (no root) para ejecutar comandos como ese usuario.

[email protected]:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ mongod --configsvr --dbpath /data/configdb --fork

Un ejemplo de esto es el usuario mongodb. Al implementar un clúster MongoDB fragmentado, todos los procesos necesarios deben ejecutarse como mongodb y no es necesario (o totalmente conveniente) demonizar los procesos usando scripts de inicio para docenas de nodos.

2
azatar

Si necesita ejecutar un solo comando, puede usar Sudo: Sudo -u username command

1
Maksim Luzik