Quand je suis passé de su+bash à su+tmux+zsh J'ai remarqué que j'obtiens le $XAUTHORITY variable définie comme /root/.xauthXXXXXX où XXXXXX sont 6 caractères alphanumériques aléatoires. Avec la configuration précédente, X fonctionnait parfaitement avec root, mais maintenant je dois copier ~username/.Xauthority à $XAUTHORITY .
La variable n'est définie nulle part; J'ai vérifié .zshrc , /etc/profile* , /etc/profile.d/* etc.
# env
TERM=screen
SHELL=/usr/bin/tmux
USER=toor
TMUX=/tmp//tmux-0/default,6495,3
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/root
SHLVL=2
HOME=/root
LOGNAME=toor
DISPLAY=:0.0
XAUTHORITY=/root/.xauthUSzLl4
COLORTERM=gnome-terminal
_=/bin/env
OLDPWD=/root
EDITOR=vim
vcs_info_msg_0_=
vcs_info_msg_1_=
% echo $XAUTHORITY
/home/mpiechotka/.Xauthority
% su
password:
# echo $XAUTHORITY
/root/.xauthUSzLl4
# ls $XAUTHORITY
ls: cannot access /root/.xauthUSzLl4: No such file or directory
# cat .tmux.conf
set -g default-command /bin/zsh
set -g default-shell /bin/zsh
su est alias su - toor et il ouvre tmux comme coquille. toor est un alias de root avec un shell différent.
Je viens de découvrir qu'il apparaît également sur su normal. Ce n'était pas le cas il y a quelque temps.
set-environment n'a pas fonctionné.
xhost +localhost n'a pas fonctionné, mais xhost + (désactivant tous les contrôles) A fonctionné.
Réponse acceptée :
Voici ce que je pense qu'il se passe.
Lorsque vous utilisez su et bash , le su -session hérite de l'environnement à l'exception de USER , HOME et SHELL , donc XAUTHORITY pointe toujours vers ~username/.Xauthority et tout va bien. Cependant (à partir de la page de manuel), lorsque le tmux le serveur est démarré :
… tmux copie l'environnement dans l'environnement
global ; en outre, chaque session dispose d'un environnement de session. Lorsqu'une
fenêtre est créée, les environnements de session et global sont fusionnés avec
l'environnement de session en remplaçant toute variable présente dans les deux.
et je soupçonne (sans connaître les détails de l'invocation) que lorsque vous changez d'informations d'identification, su essaie de trouver .Xauthority dans /root et puisqu'il ne peut pas en trouver un lorsque vous devez exécuter un X app, il en crée un. Je peux penser à plusieurs façons d'essayer de résoudre ce problème :
- Invoquer
suen utilisantsu -. Cela copiera l'environnement réel de l'utilisateur - Ajouter
set-environment <name> <value>à votretmuxconfiguration.
Malheureusement, je ne peux pas tester cela car je suis récemment passé à i3 (ce qui est génial) et je n'ai pas de machine de rechange.