Když jsem přešel z su+bash
na su+tmux+zsh
Všiml jsem si, že dostávám $XAUTHORITY
proměnná definovaná jako /root/.xauthXXXXXX
kde XXXXXX
je 6 náhodných alfanumerických znaků. S předchozí konfigurací X fungoval s rootem bezchybně, ale teď musím zkopírovat ~username/.Xauthority
na $XAUTHORITY
.
Proměnná není nikde definována; Zkontroloval jsem .zshrc
, /etc/profile*
, /etc/profile.d/*
atd.
# 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
má alias su - toor
a otevře tmux
jako skořápka. toor je alias root s jiným shellem.
Právě jsem zjistil, že se objevuje i na normálním su. Před časem to neudělalo.
set-environment
nefungovalo.
xhost +localhost
nefungovalo, ale xhost +
(vypnutí veškeré kontroly) DID work.
Přijatá odpověď:
Zde je to, co si myslím, že se děje.
Když používáte su
a bash
, su
-session zdědí prostředí s výjimkou USER
, HOME
a SHELL
, tedy XAUTHORITY
stále ukazuje na ~username/.Xauthority
a vše je v pořádku. Nicméně (z manuálové stránky), když tmux
server je spuštěn:
… tmux zkopíruje prostředí do globálního
prostředí; navíc má každá relace prostředí relace. Když je vytvořeno
okno, relace a globální prostředí se sloučí s
prostředím relace, které přepíše jakoukoli proměnnou přítomnou v obou.
a mám podezření (aniž bych znal podrobnosti o vyvolání), že když změníte přihlašovací údaje, su
pokusí se najít .Xauthority
v /root
a protože ho nemůže najít, když potřebujete spustit X
aplikaci, vytvoří jednu. Napadá mě několik způsobů, jak to zkusit opravit:
- Vyvolejte
su
pomocísu -
. Tím se zkopíruje prostředí skutečného uživatele - Přidejte
set-environment <name> <value>
do vašehotmux
konfigurace.
Bohužel to nemohu otestovat, protože jsem nedávno přešel na i3 (což je úžasné) a nemám náhradní stroj.