Digamos que tengo 2 cuentas de usuario user1
y user2
. Cuando inicio sesión como user1
, y luego cambio a user2
usar su
, puedo ejecutar programas de línea de comandos, pero los programas GUI fallan.
Ejemplo:
user1@laptop:~$ su - user2
user2@laptop:~$ leafpad ~/somefile.txt
No protocol specified
leafpad: Cannot open display:
Entonces, ¿cómo puedo ejecutar una aplicación GUI?
$XAUTHORITY
todavía está configurado en user1~/.Xauthority
, que el programa, supongo, intentará leer, y falla porque ese archivo generalmente tiene el modo 0600 (-rw-------
), lo que significa que no está disponible para leer por cualquier persona del grupo "otro", que incluye user2. Es decir, si ustedchmod o+r ~/.Xauthority
(como usuario1), habrá solucionado este problema. Escribí un guión que demuestra esto.Respuestas:
su vs. su -
Cuando te conviertes en otro usuario, generalmente quieres usarlo
su - user2
. El guión obligará a los usuarios2.bash_profile
a obtener su fuente.xhost
Además, deberá otorgar a los usuarios acceso a su pantalla. Esto se rige por X. Puede usar el comando
xhost +
para permitir que otros usuarios muestren GUI en el escritorio del usuario1.NOTA: Cuando se ejecute
xhost +
, querrá ejecutar esto mientras todavía está en un shell que pertenece al usuario1.$ PANTALLA
Cuando se convierte en usuario2, es posible que deba establecer la variable de entorno
$DISPLAY
.fuente
xhost +user2
todavía me da este error -xhost: bad hostname "user2"
. Busqué en Google algunos, y parece que necesito hacerxhost +user2@laptop
oxhost +user2@localhost
, no estoy seguro de cuál. Entonces dicexhost +user2@localhost being added to access control list
.xhost
y especificarexport DISPLAY=:0.0
, la ejecuciónleafpad
todavía me daNo protocol specified leafpad: Cannot open display:
, y no se puede ejecutar. Encontré este enlace en linuxquestions.org/questions/linux-newbie-8/… , que dice que hay algunas cookies mágicas yxauth
. ¿Has probado que esas cosas funcionan en tu computadora por cierto? ¿Quizás algo es diferente con mi configuración? Estoy en Debian + LXDE.xhost +
funciona, y parece que no se necesita nada más (no es necesario configurarlo$DISPLAY
). ¿Puedes actualizar tu respuesta y la aceptaré?xhost
da una lista en el formatoSI:localuser:USERNAME
, por lo quexhost SI:localuser:user2
debería funcionar. Ah, y la pantalla del usuario se puede encontrar usandow
.xhost +
permitirá que cualquier usuario en cualquier host que pueda conectarse a su x-server acceda a su pantalla.xhost +SI:localuser:user2
funciona para mí en Debian.Debe compartir el token de autenticación del usuario1 (suponiendo que
~
sea el hogar del usuario1 ):fuente
tee -a
para evitar tropezar con cualquier información existente.Xauthority
.Puede usar el reenvío X11:
fuente
Puede iniciar la aplicación desde otro usuario. Comenzaré la aplicación gimp desde user2, mientras estoy conectado (GUI) con el usuario 1:
(ingresar pase)
Disfruta :)
fuente
export DISPLAY
primero tengo que hacerlo , como dice la respuesta aceptada)$ xhost -
Puedes probar el comando sux:
sux se encargará de las cosas $ DISPLAY por usted. Es posible que deba instalarlo con:
bajo Debian / Ubuntu.
fuente
sux
ya no es enviado por Debian o Ubuntu. La mejor alternativa que pude encontrar es agregarxhost SI:localuser:root
(o cualquier usuario)~/.xprofile
para permitirlo permanentemente o para usarrunuser
gksu
/gksudo
alternativa que funcionaba bien. Mientras todavía está en Sid, se elimina en Buster por problemas de seguridad.Como alternativa a
sux
, para ejecutar de forma segura el comando gráfico (firefox-esr
en el ejemplo a continuación) como$AUTHUSER
(guest
en el ejemplo a continuación):el código hace:
guest
acceso al usuario a su usuario actual$DISPLAY
través dexhost +SI:localuser:guest
ssh-askpass
para solicitarle una contraseña gráficamente (por supuesto, puede usarsudoers(5)
NOPASSWD:
para evitar esto, si su política de seguridad cree que está bien. O puede usar otrosaskpass
programas o especificarlos en los archivos de configuración (consultesudo(8)
para obtener más detalles--askpass
)sudoers(5)
), ejecuta el comando/usr/bin/firefox-esr
como otro usuario (guest
)guest
) acceda a su$DISPLAY
xhost -SI:localuser:guest
finalmente,
sudo -K
elimina la contraseña en caché, por lo que la próxima invocación dessh-askpass
le pedirá la contraseña nuevamente (en lugar de usar la contraseña en caché)mientras que es poco más trabajo de lo que
gksu(8)
osux(8)
lo hizo, que puede ser escrito, y es mucho más seguro que:xhost +
(cualquier usuario tendrá acceso a su pantalla gráfica mientras esté vigente)gksu
/sux
did (copia temporal de~/.Xauthority
, que permitió al usuario especificado copiar suMIT-MAGIC-COOKIE-1
y continuar usando su pantalla incluso después de que gksu / sux finalizó (siempre que no apague la máquina o cierre la sesión de la pantalla - los protectores de pantalla, hibernación, etc. no cambiaron la magia Galleta).ya que solo permitirá el acceso de un usuario local a su pantalla, y luego solo mientras se ejecute el comando (cuando finalice el comando,
$AUTHUSER
ya no podrá acceder a su pantalla de ninguna manera).Otra alternativa segura es
ssh -X
(sin-Y
que en realidad hace que sea menos seguro! VerForwardX11Trusted
enssh_config(5)
los detalles), ya que es más fácil de usar si usted no está de secuencias de comandos, pero induce sobrecarga additinal (por ejemplo., Es más lento) y algunos programas podría no funcionar correctamente sin insegura-Y
.fuente
Necesita cargar la interfaz de usuario de instalación como usuario2 .
Intenta seguir esto:
Inicie sesión como root :
Probar el servidor x:
Si puede ver un reloj funcionando, eso es bueno, ahora intente ejecutar esto:
El resultado debería ser así:
Ahora deje que user2 acceda a xhost
ahora intente iniciar sesión nuevamente en user2 e intente abrir cualquiera de los programas GUI.
fuente
sudo su
. Usesudo
osu
; elegir uno. (3) La pregunta está escrita en términos deuser1
yuser2
. Por favor escriba su respuesta en términos deuser1
yuser2
. (Hacer o no; no haytri
). (4) Su respuesta sería mejor si incluyera una explicación deSI:localuser
. ... ... ... ... ... ... ... Por favor no responda en los comentarios; edite su respuesta para que sea más clara y completa.