Después de iniciar sesión como otro usuario, ¿cómo ejecuto los programas GUI?
thufir@doge:~$ 
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$ 
hawat@doge:~$ whoami
hawat
hawat@doge:~$ 
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$ 

Esta respuesta funciona en mi Ubuntu 16.04 y Mir (con ligeras adaptaciones):
Ejecute el comando x como otro usuario usando xauth
Wrapper bash script:
Por conveniencia, creé un script de envoltura bash , que quizás quieras descargar
/usr/local/bin/xsudoy marcar ejecutable (chmod +x /usr/local/bin/xsudo).Luego simplemente ejecuta:
Alternativas potenciales:
pam_xauth(s. Esta respuesta ) Sin embargo, esto no funciona para mí por alguna razón. (Todavía recibo el error de que Firefox no puede conectarse a la pantalla en: 0)xhost +local:o similar, lo que hará quegksudo -u hawat firefoxfuncione sin ningún script de envoltura. Sin embargo, tenga en cuenta que esto abre una brecha de seguridad : cualquier usuario activo en su host local podrá acceder a su teclado, mouse, pantalla, etc.fuente
Después de pasar demasiado tiempo en esto, descubrí que con Gnome en Ubuntu 16.04, el valor correcto es
DISPLAY=:1, noDISPLAY=:0como lo ha sido desde tiempos inmemoriales.fuente
export DISPLAY =: 0 funciona bien, pero esta es una solución temporal ya que debe escribir esto cada vez que abra el terminal.
Solución permanente: El problema podría deberse a la variable env_keep en / etc / sudoers. Agregue la siguiente línea al final de / etc / sudoers usando gedit o sudo visudo
Nota: Recuerde usar siempre "+ =" al agregar a env_keep. En caso de que haya algún otro env_keep con "=" cámbielo a "+ =" porque usar "=" anulará otros valores.
fuente
visudocontenedor, que proporciona algunas comprobaciones de cordura antes de escribir un nuevo archivo sudoers.