Dans un environnement linux commun, le serveur X utilise le protocole MIT-MAGIC-COOKIE-1 pour autoriser l'accès à l'écran. Tout utilisateur qui veut accéder à l'écran doit avoir un nom d'utilisateur correct. cookie (habituellement stocké dans le fichier ~/.Xauthority). Normalement, le cookie est généré par un gestionnaire d'affichage (écran de connexion). Si vous démarrez le serveur X à partir de vos scripts personnalisés, vous devez générer le cookie vous-même, le stocker dans un fichier ~/.Xauthority. dossier de l'autorité et informer le serveur de ce fichier.
Vous pouvez utiliser la commande mcookie
pour générer le cookie et l'ajouter au fichier d'autorité avec xauth
:
# touch /home/staff/.Xauthority
# xauth -f /home/staff/.Xauthority add :0 . $(mcookie)
Pramètre -f /home/staff/.Xauthority
dit à xauth
pour utiliser le fichier d'autorité de la personnel utilisateur. :0
est le nom d'affichage. Le point ( .
) spécifie le protocole MIT-MAGIC-COOKIE-1. mcookie
vient de util-linux paquet.
Maintenant, si vous exécutez :
# xauth -f /home/staff/.Xauthority list
vous devriez voir quelque chose comme :
server/unix:0 MIT-MAGIC-COOKIE-1 c61bdc0b88cf0cb376e1b29647a8c4d6
Lorsque vous vous connectez en tant que personnel vous devriez voir le même résultat sans paramètre -f :
$ xauth list
server/unix:0 MIT-MAGIC-COOKIE-1 c61bdc0b88cf0cb376e1b29647a8c4d6
Si ce n'est pas le cas, vérifiez que XAUTHORITY
est soit indéfinie, soit définie comme "/home/staff/.Xauthority".
Démarrez le serveur X avec -auth
paramètre :
# X -auth /home/staff/.Xauthority
Maintenant personnel l'utilisateur peut accéder à l'affichage :0
. La seule chose qui reste à faire est de définir la variable d'environnement DISPLAY
- cela peut être fait via sudo
paramètre. Ainsi, lorsque vous vous connectez à serveur et exécutez une commande qui affiche une image en tant que personnel l'utilisateur, il devrait être affiché. En utilisant ImageMagick comme suggéré par L. Levrel la commande serait :
# ssh server sudo -u staff DISPLAY=:0 display -window root /path/to/image.png
Note vous ne devez pas utiliser personnel utilisateur. Vous pouvez créer un fichier d'autorité dans un emplacement commun (par exemple /var/tmp/xauthority) et définir une variable d'environnement XAUTHORITY
pour Alice y Bob à ce chemin.
Une autre alternative consiste à "distribuer" le cookie à Celui d'Alice y Bob's les fichiers d'autorité (c'est en fait similaire à ce que font les gestionnaires d'affichage) :
# xauth -f /var/tmp/xauthority extract - :0 | xauth -f /home/alice/.Xauthority merge
# xauth -f /var/tmp/xauthority extract - :0 | xauth -f /home/bob/.Xauthority merge
De cette façon Alice y Bob ne doit pas faire sudo staff
afin d'accéder à l'affichage.
Note que si vous avez plusieurs serveurs X en fonctionnement, vous devez utiliser un nom d'affichage différent de celui de votre serveur. :0
dans les commandes ci-dessus (par exemple : :1
, :2
etc.).