61 votes

comment utiliser xauth pour exécuter une application graphique via un autre utilisateur sur linux

Mon compte d'utilisateur normal est, disons, user1. J'ai créé un utilisateur2 distinct pour une application x que je voudrais exécuter tout en étant connecté à x en tant qu'utilisateur1, mais d'une manière qui l'empêchera d'accéder en lecture/écriture aux données de l'utilisateur1. J'ai pensé que je pourrais utiliser xauth et sudo/su vers user2 à partir de user1 pour exécuter cette application. Comment dois-je m'y prendre ? Je ne sais pas comment configurer xauth.

45voto

dutara Points 11

Pour utiliser xauth de manière sélective, en tant qu'utilisateur1 :

xauth list|grep `uname -n`

Ceci imprime les entrées d'autorisation de la clé hexagonale pour vous . Vous êtes pourrait ont également des affichages différents associés à ces hôtes.

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

DISPLAY=:0; export DISPLAY

Alors cours :

xauth add $DISPLAY . hexkey

Notez le point après le $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

18voto

Carlos Pastor Points 317

J'ai mis dans mon .zshrc une ligne avec export XAUTHORITY=~/.Xauthority et maintenant je suis capable d'exécuter sudo -E xcommand . Après avoir beaucoup cherché sur Google, j'ai trouvé que c'était le moyen le plus simple.

13voto

Andrew Grimm Points 928

Premier : N'utilisez pas xhost + c'est assez peu sûr (autorisation/refus de couverture).

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

Dans les deux cas, user2 utilisera le cookie secret dans .Xauthority pour s'autoriser à accéder au serveur X, et personne d'autre n'y aura accès.

Notas:

  • En fonction de vos autorisations de fichiers, 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 Le dossier est plus sélectif, sinon c'est une question de goût.

8voto

ehempel Points 143

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

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

8voto

ACV Points 171

En tant que racine :

xhost local:yourusername

Où yourusername est votre nom d'utilisateur :)

T xclock devrait fonctionner s'il est installé

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