GNU/Linux >> Tutoriels Linux >  >> Linux

comment utiliser xauth pour exécuter une application graphique via un autre utilisateur sous Linux

Solution 1 :

Pour utiliser xauth sélectivement, en tant qu'utilisateur1, exécutez :

xauth list|grep `uname -n`

Cela imprime les entrées d'autorisation hexkey pour vous. Vous pourriez ont également différents affichages associés à ces hôtes.

En tant qu'utilisateur2, définissez votre affichage (en supposant que le cas par défaut) :

DISPLAY=:0; export DISPLAY

Exécutez ensuite :

xauth add $DISPLAY . hexkey

Notez le point après $DISPLAY et avant la clé hexagonale.

Lorsque l'accès n'est plus nécessaire, en tant qu'utilisateur2, vous pouvez exécuter :

xauth remove $DISPLAY

Solution 2 :

J'ai mis mon .zshrc une ligne avec export XAUTHORITY=~/.Xauthority et maintenant je suis capable d'exécuter sudo -E xcommand . Après de nombreuses recherches sur Google, c'était pour moi le moyen le plus simple.

Solution 3 :

Premièrement :n'utilisez pas xhost + , c'est plutôt peu sûr (autorisation/refus général).

Utilisez plutôt le mécanisme X-Cookie :

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

Alternativement, si vous avez sux installé, utilisez-le (voir la réponse d'ehempel).

Dans les deux cas, l'utilisateur2 utilisera le cookie secret dans .Xauthority pour autoriser le serveur X, et personne d'autre n'y aura accès.

Remarques :

  • Selon vos autorisations de fichier, vous devrez peut-être copier .Xauthority d'une autre manière.
  • Au lieu de copier .Xauthority , vous pouvez également utiliser xauth pour extraire et copier la clé d'autorisation (voir la réponse de Randall). Si vous avez plusieurs clés dans le .Xauthority fichier c'est plus sélectif; sinon c'est une question de goût.

Solution 4 :

En supposant que debian ou ubuntu (devrait être similaire sur Red Hat / SUSE).

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

Solution 5 :

Cela résoudra le problème pour tous les utilisateurs :

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

Linux
  1. Comment utiliser BusyBox sous Linux

  2. Comment j'utilise cron sous Linux

  3. Comment utiliser la commande chown pour changer de propriétaire sous Linux

  4. Comment utiliser la commande id sous Linux :5 exemples utiles

  5. Exécutez la commande en tant qu'utilisateur du système Linux (shell =/bin/false)

Comment utiliser pkgsrc sous Linux

Comment utiliser la commande usermod sous Linux

Comment exécuter Windows 95 sous Linux

Comment exécuter Docker en tant qu'utilisateur non root sous Linux

Comment changer d'utilisateur sous Linux

Comment utiliser la commande ulimit sous Linux