Mon compte utilisateur habituel est, disons, utilisateur1. J'ai créé user2 distinct pour une application x que j'aimerais 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 user1. Je pensais que je pouvais utiliser xauth et Sudo/su pour user2 de user1 pour exécuter cette application. Comment puis-je faire cela? Je ne sais pas comment configurer xauth.
J'ai trouvé quelque chose qui fonctionne très bien pour moi sur KDE
kdesu -u username /path/to/program
Pour utiliser xauth sélectivement lors de l'exécution de user1:
xauth list|grep `uname -n`
Ceci imprime les entrées d'autorisation de clé hexagonale pour vous. Vous pourriez avoir également différents affichages associés à ces hôtes.
En tant qu'utilisateur2 définissez votre affichage (en supposant 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
Je mets mon .zshrc
une ligne avec export XAUTHORITY=~/.Xauthority
et maintenant je peux exécuter Sudo -E xcommand
. Après beaucoup de recherches sur Google, c'était pour moi le moyen le plus simple.
Premièrement: n'utilisez pas xhost +
, c'est plutôt peu sûr (couverture autoriser/refuser).
Utilisez plutôt le mécanisme X-Cookie:
su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority
export DISPLAY=:0
Sinon, si vous avez sux
installé, utilisez-le (voir la réponse d'ehempel).
Dans les deux cas, user2 utilisera le cookie secret dans .Xauthority pour autoriser le serveur X, et personne d'autre n'y aura accès.
Remarques:
.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.En supposant debian ou ubuntu (devrait être similaire sur Red Hat/SUSE).
Sudo apt-get install sux
sux user -c 'command'
Cela résoudra le problème pour tous les utilisateurs:
cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
En tant que root:
xhost local:yourusername
Où votre nom d'utilisateur est votre nom d'utilisateur :)
Ensuite, faites su car votre utilisateur xclock
devrait fonctionner s'il est installé
Ce ne sont que des hacks:
sleske ci-dessus a, je pense, la bonne solution.
Cette manière faite dans suse/opensuse: http://www.novell.com/support/kb/doc.php?id=700374
Modifiez simplement le /etc/pam.d/su, en ajoutant l'option (en gras):
session facultative pam_xauth.so systemuser = 1
Ensuite, vous pouvez basculer avec su sans -:
su user2
et exécutez l'application graphiquement.