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
su
en utilisantsu -
. Cela copiera l'environnement réel de l'utilisateur - Ajouter
set-environment <name> <value>
à votretmux
configuration.
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.