Quando sono passato da su+bash
a su+tmux+zsh
Ho notato che ottengo il $XAUTHORITY
variabile definita come /root/.xauthXXXXXX
dove XXXXXX
sono 6 caratteri alfanumerici casuali. Con la configurazione precedente, X ha funzionato perfettamente con root, ma ora devo copiare ~username/.Xauthority
a $XAUTHORITY
.
La variabile non è definita da nessuna parte; Ho controllato .zshrc
, /etc/profile*
, /etc/profile.d/*
ecc.
# 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
è alias di su - toor
e si apre tmux
come conchiglia. toor è un alias di root con shell diversa.
Ho appena scoperto che appare anche su su normale. Non l'ha fatto qualche tempo fa.
set-environment
non ha funzionato.
xhost +localhost
non ha funzionato, ma xhost +
(disabilitando tutti i controlli) ha funzionato.
Risposta accettata:
Ecco cosa penso stia succedendo.
Quando utilizzi su
e bash
, il su
-session eredita l'ambiente con l'eccezione di USER
, HOME
e SHELL
, quindi XAUTHORITY
punta ancora a ~username/.Xauthority
e va tutto bene. Tuttavia (dalla pagina man), quando tmux
il server è avviato:
… tmux copia l'ambiente nell'ambiente globale
; inoltre, ogni sessione dispone di un ambiente di sessione. Quando viene creata una finestra
, la sessione e gli ambienti globali vengono uniti con
all'ambiente della sessione che sovrascrive qualsiasi variabile presente in entrambi.
e sospetto (senza conoscere i dettagli di chiamata) che quando cambi le credenziali, su
cerca di trovare .Xauthority
in /root
e poiché non riesce a trovarne uno quando devi eseguire una X
app, ne crea una. Mi vengono in mente un paio di modi in cui puoi provare a risolvere questo problema:
- Richiama
su
utilizzandosu -
. Questo copierà l'ambiente dell'utente reale - Aggiungi
set-environment <name> <value>
al tuotmux
config.
Sfortunatamente, non posso testarlo da quando sono passato di recente a i3 (che è fantastico) e non ho una macchina di riserva.