GNU/Linux >> LINUX-Kenntnisse >  >> Linux

`$xauthority` erscheint aus dem Nichts auf Su+tmux?

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:

  1. Rufen Sie su auf indem Sie su - verwenden . Dadurch wird die Umgebung des echten Benutzers kopiert
  2. Fügen Sie set-environment <name> <value> hinzu zu Ihrem tmux Konfig.

Leider kann ich das nicht testen, da ich kürzlich auf i3 umgestiegen bin (was großartig ist) und ich keinen Ersatzcomputer habe.


Linux
  1. Lassen Sie vim symbolischen Links folgen, wenn Sie Dateien von der Befehlszeile aus öffnen

  2. GLIBCXX_3.4.9 nicht gefunden, wenn ffmpeg von PHP auf dem Lampp-Server ausgeführt wird

  3. Fehler 1312 von net use beim Zuordnen der Samba-Freigabe

  4. Bootmenü beim Booten von einer Live-CD bearbeiten

  5. Ist es möglich, bei der Entwicklung keinen externen Zugriff von einer Linux-Maschine zu simulieren?

Bildschirm durcheinander, wenn Wiederaufnahme aus Suspend?

Stellen Sie Cloud-Ressourcen bereit, wenn Sie von Amazon Web Services migrieren

Beschleunigen Sie rsync, wenn Sie einen Linux-Server über die Befehlszeile migrieren

Klassische Path.DirectorySeparatorChar-Probleme beim Wechsel von .NET Core unter Windows zu Linux

So verhindern Sie, dass SSH-Verbindungen aufgrund von Inaktivität getrennt werden, wenn Sie MobaXterm verwenden

Der untergeordnete Prozess kann nicht getrennt werden, wenn der Hauptprozess von systemd gestartet wird