Als ich von su+bash
gewechselt habe zu su+tmux+zsh
Mir ist aufgefallen, dass ich den $XAUTHORITY
erhalte Variable definiert als /root/.xauthXXXXXX
wobei XXXXXX
sind 6 zufällige alphanumerische Zeichen. Mit der vorherigen Konfiguration hat X mit root einwandfrei funktioniert, aber jetzt muss ich ~username/.Xauthority
kopieren zu $XAUTHORITY
.
Die Variable ist nirgendwo definiert; Ich habe .zshrc
überprüft , /etc/profile*
, /etc/profile.d/*
usw.
# 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
hat den Aliasnamen su - toor
und es öffnet tmux
als Schale. toor ist ein Alias von root mit einer anderen Shell.
Ich habe gerade entdeckt, dass es auch auf normalem su erscheint. Das hat es vor einiger Zeit nicht getan.
set-environment
hat nicht funktioniert.
xhost +localhost
hat nicht funktioniert, aber xhost +
(Deaktivierung der gesamten Steuerung) HAT funktioniert.
Akzeptierte Antwort:
Hier ist, was meiner Meinung nach passiert.
Wenn Sie su
verwenden und bash
, der su
-session erbt die Umgebung mit Ausnahme von USER
, HOME
und SHELL
, also XAUTHORITY
zeigt immer noch auf ~username/.Xauthority
und alles ist in Ordnung. Allerdings (aus der Manpage), wenn der tmux
Server gestartet:
… tmux kopiert die Umgebung in die globale
Umgebung; Darüber hinaus hat jede Sitzung eine Sitzungsumgebung. Wenn ein
Fenster erstellt wird, werden die Sitzungs- und die globale Umgebung mit
der Sitzungsumgebung zusammengeführt, wobei alle in beiden vorhandenen Variablen überschrieben werden.
und ich vermute (ohne Aufrufdetails zu kennen), dass beim Wechseln der Anmeldeinformationen su
versucht, .Xauthority
zu finden in /root
und da es keinen finden kann, wenn Sie ein X
ausführen müssen App erstellt sie eine. Ich kann mir ein paar Möglichkeiten vorstellen, wie Sie versuchen können, dies zu beheben:
- Rufen Sie
su
auf indem Siesu -
verwenden . Dadurch wird die Umgebung des echten Benutzers kopiert - Fügen Sie
set-environment <name> <value>
hinzu zu Ihremtmux
Konfig.
Leider kann ich das nicht testen, da ich kürzlich auf i3 umgestiegen bin (was großartig ist) und ich keinen Ersatzcomputer habe.