Hice una pregunta similar, porque me encontré con problemas con las variables de entorno XDG ( $XDG_RUNTIME_DIRen particular) que me estaban volviendo loco. -> unix.stackexchange.com/questions/354826/…
En general, puede usar sudopara iniciar un nuevo shell como el usuario que desee; la -ubandera 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 sudoprobablemente sea más simple, siempre que esté instalado y tenga permiso para usarlo.
Además, su - [user]puede ser útil: el guión adicional le proporciona un shell de inicio de sesión.
Ephemient
Recibo este error "-su: / dev / stderr: Permiso denegado" después de ejecutar este comando echo >>/dev/stderren un inicio de sesión con su --login ..., ¿algún consejo? Encontré esto por cierto unix.stackexchange.com/questions/38538/…
Aquarius Power
¿Esto permite que cada nuevo usuario tenga valores diferentes y primordiales para las variables de entorno? por ejemplo, git config para trabajo, código abierto, etc.
Kevin Suttle
Un hallazgo, cuando enumeré el env, vio que todo estaba en orden y que podía realizarse una inspección visual; Y una cosa era incorrecto: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on archivo ~ / .Xauthority` es: -rw-------. Hice una copia y eso me permitió ejecutar gedit como experimento.
será el
1
si obtiene "Esta cuenta no está disponible actualmente": su -s / bin / bash - www-data
max4ever
46
Por lo general, utiliza sudopara lanzar un nuevo shell como el usuario que desea; la -ubandera te permite especificar el nombre de usuario que deseas:
Hay formas más tortuosas si no tiene acceso a sudo, como ssh username@localhost, pero creo que sudoprobablemente sea más simple si está instalado y tiene permiso para usarlo
¿Qué pasa si mi sistema no tiene servidor ssh ni sudo? ¿Puedes mencionar esa porción en la respuesta?
tshepang
ok, Pratt respondió eso
tshepang
44
sudo -sle da un shell como su, sudo -isimula inicio de sesión como su -. Se puede combinar con -u $user, por supuesto.
Ephemient
Mucho más eficiente. ¡poder "iniciar sesión" como un usuario que normalmente no puede iniciar sesión es un gran activo ...! totalmente me permitió ejecutar una instancia de base de datos sin jugar con permisos o selinux
Félix Gagnon-Grenier
20
$ 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.
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 sudo.
Para cambiar la sesión de terminal a un usuario diferente, donde ese usuario no puede volver 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.
Un ejemplo de esto es el mongodbusuario. Al implementar un clúster MongoDB fragmentado, todos los procesos necesarios deben ejecutarse como mongodby no es necesario (o totalmente conveniente) demonizar los procesos utilizando scripts de inicio para docenas de nodos.
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, sino que 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 haya terminado, puede hacer ctrl-d y volver a su inicio de sesión.
$XDG_RUNTIME_DIR
en particular) que me estaban volviendo loco. -> unix.stackexchange.com/questions/354826/…Respuestas:
¿Qué hay de usar el
su
comando?Si desea iniciar sesión como root, no es necesario especificar el nombre de usuario:
En general, puede usar
sudo
para iniciar un nuevo shell como el usuario que desee; la-u
bandera te permite especificar el nombre de usuario que deseas:Hay formas más tortuosas si no tiene acceso a sudo, como ssh username @ localhost, pero
sudo
probablemente sea más simple, siempre que esté instalado y tenga permiso para usarlo.fuente
su - [user]
puede ser útil: el guión adicional le proporciona un shell de inicio de sesión.echo >>/dev/stderr
en un inicio de sesión consu --login ...
, ¿algún consejo? Encontré esto por cierto unix.stackexchange.com/questions/38538/…env
, vio que todo estaba en orden y que podía realizarse una inspección visual; Y una cosa era incorrecto:XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
archivo ~ / .Xauthority` es:-rw-------
. Hice una copia y eso me permitió ejecutar gedit como experimento.Por lo general, utiliza
sudo
para lanzar un nuevo shell como el usuario que desea; la-u
bandera te permite especificar el nombre de usuario que deseas:Hay formas más tortuosas si no tiene acceso a sudo, como
ssh username@localhost
, pero creo quesudo
probablemente sea más simple si está instalado y tiene permiso para usarlofuente
sudo -s
le da un shell comosu
,sudo -i
simula inicio de sesión comosu -
. Se puede combinar con-u $user
, por supuesto.Este comando imprime el usuario actual. Para cambiar de usuario, tendremos que usar este comando (seguido de la contraseña del usuario):
Después de ingresar la contraseña correcta, iniciará sesión como el usuario especificado (que puede verificar volviendo a ejecutar
whoami
.fuente
Si está ejecutando Ubuntu, y si el usuario con el que desea iniciar sesión no tiene una contraseña establecida:
Ingrese su propia contraseña y debe estar configurado. Por supuesto, esto requiere que su usuario tenga derechos para obtener privilegios de root
sudo
.fuente
Para cambiar la sesión de terminal a un usuario diferente, donde ese usuario no puede volver al usuario original, use exec:
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.
fuente
sudo -iu <your_username>
para mí haz el trucofuente
Otra ruta es lanzar un nuevo shell como un usuario diferente (no root) para ejecutar comandos como ese usuario.
Un ejemplo de esto es el
mongodb
usuario. Al implementar un clúster MongoDB fragmentado, todos los procesos necesarios deben ejecutarse comomongodb
y no es necesario (o totalmente conveniente) demonizar los procesos utilizando scripts de inicio para docenas de nodos.fuente
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, sino que ejecuta un comando como UserB y aún permanece conectado como UserA, debe hacer esto:
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:
Si prefiere iniciar sesión temporalmente como UsuarioB para ejecutar muchos comandos, simplemente haga lo siguiente:
Esto le dará un nuevo shell para UserB (verifíquelo escribiendo id). Cuando haya terminado, puede hacer ctrl-d y volver a su inicio de sesión.
fuente
Si necesita ejecutar un solo comando, puede usar sudo:
sudo -u username command
fuente
Luego le pedirá la contraseña de sudo (la contraseña del usuario actualmente conectado).
Además: ¡asegúrese de que el usuario actual esté en el archivo sudoers!
fuente