GNU/Linux >> Tutoriels Linux >  >> Linux

`$xauthority` apparaît de « nulle part » sur Su+tmux ?

Quand je suis passé de su+bash à su+tmux+zsh J'ai remarqué que j'obtiens le $XAUTHORITY variable définie comme /root/.xauthXXXXXXXXXXXX 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 :

  1. Invoquer su en utilisant su - . Cela copiera l'environnement réel de l'utilisateur
  2. Ajouter set-environment <name> <value> à votre tmux 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.


Linux
  1. Mettre à niveau Ubuntu 16.04.1 à partir de 14.04, aucun bureau n'apparaît ?

  2. Considérations post-migration lors de la migration depuis Amazon Web Services

  3. Accélérez rsync lors de la migration d'un serveur Linux à partir de la ligne de commande

  4. Impossible de détacher le processus enfant lorsque le processus principal est démarré à partir de systemd

  5. Erreur 1312 de l'utilisation du réseau lors du mappage du partage Samba

Écran foiré lors de la reprise après suspension ?

Provisionner des ressources cloud lors de la migration depuis Amazon Web Services

Classic Path.DirectorySeparatorChar gotchas lors du passage de .NET Core sous Windows à Linux

Comment empêcher les connexions SSH de se déconnecter en raison de l'inactivité lors de l'utilisation de MobaXterm

Faire en sorte que vim suive les liens symboliques lors de l'ouverture de fichiers à partir de la ligne de commande

GLIBCXX_3.4.9 introuvable lors de l'exécution de ffmpeg à partir de php sur le serveur lampp