Digamos que tengo 2 cuentas de usuario user1y user2. Cuando inicio sesión como user1, y luego cambio a user2usar 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?

$XAUTHORITYtodaví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_profilea 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 +user2todavía me da este error -xhost: bad hostname "user2". Busqué en Google algunos, y parece que necesito hacerxhost +user2@laptopoxhost +user2@localhost, no estoy seguro de cuál. Entonces dicexhost +user2@localhost being added to access control list.xhosty especificarexport DISPLAY=:0.0, la ejecuciónleafpadtodaví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é?xhostda una lista en el formatoSI:localuser:USERNAME, por lo quexhost SI:localuser:user2deberí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:user2funciona para mí en Debian.Debe compartir el token de autenticación del usuario1 (suponiendo que
~sea el hogar del usuario1 ):fuente
tee -apara 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 DISPLAYprimero 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
suxya no es enviado por Debian o Ubuntu. La mejor alternativa que pude encontrar es agregarxhost SI:localuser:root(o cualquier usuario)~/.xprofilepara permitirlo permanentemente o para usarrunusergksu/gksudoalternativa 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-esren el ejemplo a continuación) como$AUTHUSER(guesten el ejemplo a continuación):el código hace:
guestacceso al usuario a su usuario actual$DISPLAYtravés dexhost +SI:localuser:guestssh-askpasspara 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 otrosaskpassprogramas o especificarlos en los archivos de configuración (consultesudo(8)para obtener más detalles--askpass)sudoers(5)), ejecuta el comando/usr/bin/firefox-esrcomo otro usuario (guest)guest) acceda a su$DISPLAYxhost -SI:localuser:guestfinalmente,
sudo -Kelimina la contraseña en caché, por lo que la próxima invocación dessh-askpassle 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/suxdid (copia temporal de~/.Xauthority, que permitió al usuario especificado copiar suMIT-MAGIC-COOKIE-1y 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,
$AUTHUSERya no podrá acceder a su pantalla de ninguna manera).Otra alternativa segura es
ssh -X(sin-Yque en realidad hace que sea menos seguro! VerForwardX11Trustedenssh_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. Usesudoosu; elegir uno. (3) La pregunta está escrita en términos deuser1yuser2. Por favor escriba su respuesta en términos deuser1yuser2. (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.