GNU/Linux >> Tutoriales Linux >  >> Linux

cómo usar xauth para ejecutar una aplicación gráfica a través de otro usuario en Linux

Solución 1:

Para usar xauth de forma selectiva, como usuario1 ejecutar:

xauth list|grep `uname -n`

Esto imprime las entradas de autorización de clave hexadecimal para usted. podrías tener diferentes pantallas asociadas con esos hosts también.

Como usuario2, configure su pantalla (asumiendo el caso predeterminado):

DISPLAY=:0; export DISPLAY

Luego ejecuta:

xauth add $DISPLAY . hexkey

Tenga en cuenta el punto después de $DISPLAY y antes de la clave hexadecimal.

Cuando ya no se necesita acceso, como usuario2 puede ejecutar:

xauth remove $DISPLAY

Solución 2:

Puse mi .zshrc una línea con export XAUTHORITY=~/.Xauthority y ahora puedo ejecutar sudo -E xcommand . Después de mucho buscar en Google, para mí esta fue la forma más fácil.

Solución 3:

Primero:no use xhost + , es bastante inseguro (permitir/denegar general).

Más bien utilice el mecanismo X-Cookie:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

Alternativamente, si tiene sux instalado, use eso (vea la respuesta de ehempel).

En ambos casos, el usuario 2 utilizará la cookie secreta en .Xauthority para autorizar el servidor X y nadie más tendrá acceso a él.

Notas:

  • Dependiendo de sus permisos de archivo, es posible que deba copiar .Xauthority de alguna otra manera.
  • En lugar de copiar .Xauthority , también puedes usar xauth para extraer y copiar la clave de autorización (ver la respuesta de Randall). Si tiene varias claves en el .Xauthority archivo esto es más selectivo; de lo contrario, es cuestión de gustos.

Solución 4:

Suponiendo que debian o ubuntu (debería ser similar en Red Hat/SUSE).

sudo apt-get install sux
sux user -c 'command'

Solución 5:

Esto solucionará el problema para todos los usuarios:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF

Linux
  1. Cómo usar BusyBox en Linux

  2. Cómo uso cron en Linux

  3. Cómo usar el comando id en Linux:5 ejemplos útiles

  4. Cómo usar sudo para permitir que un usuario no root ejecute un comando en particular

  5. Ejecute el comando como usuario del sistema Linux (shell =/bin/false)

Cómo usar pkgsrc en Linux

Cómo usar el comando usermod en Linux

Cómo ejecutar Windows 95 en Linux

Cómo ejecutar Docker como usuario no root en Linux

Cómo cambiar de usuario en Linux

Cómo usar el comando ulimit en Linux