He iniciado sesión como usuario A. Quiero ejecutar una aplicación GUI como usuario B. Usuario, no root. El usuario B también es local, no remoto, solo necesito diferentes variables de entorno. No quiero ejecutar la segunda X, las quiero en la misma pantalla. No tengo ningún problema con los programas que se ejecutan en la terminal, su - ...
funciona. Para gráficos hay un mensaje de error:
Application initialization failed: couldn't connect to display ":0.0"
o
Gtk-WARNING **: cannot open display: :0.0
¿Existe una buena manera de solucionarlo? ¿El artículo sobre el uso correcto de xhost
o algo así?
Respuesta1
Ejecute el siguiente comando para dar userBname
acceso a la pantalla: xhost +SI:localuser:userBname
Puede utilizar xhost +
para dar acceso a todos; sin embargo, esto es inseguro. Es mejor dar acceso por usuario. La sintaxis correcta para las entradas de xhosts para usuarios locales es SI:localuser:username
.
Luego su userBname
, export DISPLAY=:0.0
y finalmente ejecute su programa GUI. Aunque anteriormente concedió acceso a la pantalla con xhost
, también debe configurar la variable ambiental DISPLAY
para que los programas sepan dónde colocar su salida gráfica. Permitir diferentes DISPLAY
variables para diferentes usuarios permite que varios usuarios conectados a una sola máquina utilicen diferentes terminales físicos.
Respuesta2
Simplemente use gksu -u el nombre de usuario deseado, ingrese la contraseña y estará listo para comenzar.
DISPLAY=:1.0 gksu [-u <user>] [options] <command>
Alternativamente, puede usar su y luego configurar XDISPLAY en la pantalla derecha y finalmente iniciar la aplicación deseada.
Respuesta3
Así es como logro esto: -
- Abra una terminal x como usuario con la sesión X existente.
- Emita el comando
xauth list
. Debería ver los valores de las cookies X Magic que autentican las solicitudes al servidor X, para varios descriptores. Copie el que tiene la referencia "unix". p.ejmyhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- Abra una segunda terminal como usuario inicial pero cambie de usuario (su) a la identificación que desee, por ejemplo
su - user2
- Ahora que ha cambiado de usuario, emita el comando
xauth add
y pegue la línea que copió previamente en la etapa 2, luego presione regresar, por ejemplo.xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- Inicie un programa X en la segunda terminal desde la línea de comando, por ejemplo:
firefox
¡Eso es todo!
Respuesta4
Primero agregue su segundo usuario a localuser:
$ xhost SI:localuser:user2
usuario local: jugador que se agrega a la lista de control de acceso
Luego ejecute sus aplicaciones:
$ sudo -u user2 -H firefox