GNU/Linux >> Tutoriales Linux >  >> Linux

¿Lanzar un programa gráfico en el escritorio de otro usuario como root?

Las siguientes son otras preguntas que creo que necesito saber:

  • ¿De una sesión no X? (lo que significa que root no ha iniciado sesión en X)

  • Si varias personas iniciaron sesión en X, ¿podría detectar automáticamente quién estaba en qué pantalla y, por lo tanto, detectar mediante programación en qué pantalla necesito iniciar la aplicación?

  • ¿Puedo iniciar la aplicación como usuario? (está bien, estoy 99,999 % seguro de que es un sí)

  • ¿Puedo detectar si los usuarios del grupo X están conectados a X?

Respuesta aceptada:

Para iniciar un programa gráfico en el escritorio de un usuario, debe encontrar dos cosas:en qué pantalla se encuentra el escritorio del usuario (la dirección) y qué cookie de autorización usar (la contraseña).

El siguiente comando debe enumerar las pantallas locales en las que el usuario ha iniciado sesión (una por línea) en la mayoría de los dispositivos:

who | awk -v user="$target_user" '$1 == user && $2 ~ "^:" {print $2}'

Encontrar la cookie de autorización es un poco más difícil. Tienes que buscar el archivo de cookies del usuario, que es ~/.Xauthority de forma predeterminada (todo lo que necesita es la ubicación del archivo de cookies, no necesita extraer la cookie de él). Eso funciona en muchos sistemas, pero no en todos; depende del administrador de pantalla y de cómo esté configurado, y en particular, Gdm (el predeterminado en Ubuntu) no usó la ubicación predeterminada la última vez que miré. No puedo pensar en una forma portátil de averiguar el archivo de cookie X real. La forma más precisa de averiguarlo es averiguar el pid del proceso X y buscar el argumento para -auth opción. Otra forma es encontrar un proceso que se esté ejecutando en ese servidor X y tomar su XAUTHORITY variable del entorno. Si tiene problemas para encontrar el archivo de cookies, consulte Abrir una ventana en una pantalla X remota (¿por qué "No se puede abrir la pantalla")?

Una vez que tenga ambas piezas de información, coloque la pantalla elegida en el DISPLAY variable de entorno, el archivo de cookies de autoridad X elegido en XAUTHORITY variable de entorno, y listo. No importa con qué usuario se ejecute el programa; combinar con su si quieres.


Linux
  1. "error al construir el proxy..." ¿Al intentar iniciar Gnome-terminal como root?

  2. ¿Cómo cambiar de usuario raíz a otro usuario que tenga un shell de Nologin?

  3. ¿Cómo puedo iniciar un programa como root usando el administrador de ventanas?

  4. ¿Es posible ejecutar aplicaciones gráficas como Firefox sin instalar un entorno de escritorio?

  5. Aplicaciones GUI sin escritorio gráfico

Dos herramientas gráficas para manipular archivos PDF en el escritorio de Linux

Reseña del usuario sobre Linux Lite 3.0:escritorio Linux simple, rápido y gratuito

Actualización de ISPConfig 3.1 a ISPConfig 3.2

Gotop:otro monitor gráfico de actividad de TUI, escrito en Go

¿Cómo iniciar un conjunto de programas dentro de Tmux o Gnome-terminal dentro de un script?

Inicie siempre la Terminal como usuario raíz (sudo) en Ubuntu