1 votes

Comment démarrer un serveur X partagé pour une utilisation distante, non redirigée ?

Je ne suis pas sûr de poser la bonne question, alors voici ce que je veux faire en réalité :

J'ai un serveur auquel est connecté un écran et aucun autre appareil. Il exécute un serveur SSH.

Je voudrais qu'Alice puisse se connecter au serveur et exécuter une commande en tant que "staff" pour afficher une image à l'écran. Par exemple...

ssh server sudo -u 'staff' gst-launch-1.0 playbin uri=file:///path/to/image.png

Alice rentre chez elle, et l'image est toujours là. Bob entre, et décide qu'il veut une autre image :

ssh server sudo -u 'staff' gst-launch-1.0 playbin uri=file:///path/to/other.png

Comment le serveur X doit-il être démarré et configuré pour répondre à mes besoins ? Seul l'utilisateur "staff" devra manipuler l'affichage.

Je sais que je peux démarrer le serveur au démarrage en utilisant xinit et exécuter un programme de mon choix. Quel programme dois-je exécuter ? Que doit-il faire ? Y a-t-il des variables d'environnement que je dois faire circuler ?

2voto

openhs Points 116

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.).

0voto

L. Levrel Points 346

Si vous avez installé ImageMagick, vous pouvez utiliser :

display -window root /path/to/image.png

Voir la documentation . Il existe beaucoup d'options . Vous aurez probablement besoin d'au moins -display .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X