su+bash
からsu+tmux+zsh
に切り替えると、$XAUTHORITY
変数が/root/.xauthXXXXXX
として定義されていることに気付きました。ここでXXXXXX
は6文字のランダムな英数字です。以前の構成では、Xはrootで問題なく動作しましたが、今度は~username/.Xauthority
を$XAUTHORITY
にコピーする必要があります。
変数はどこにも定義されていません。 .zshrc
、/etc/profile*
、/etc/profile.d/*
などをチェックしました。
# 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
はsu - toor
にエイリアスされ、tmux
をシェルとして開きます。 toorは、異なるシェルを持つルートのエイリアスです。
通常のsuにも表示されることを発見しました。それはしばらく前にはしませんでした。
set-environment
が機能しませんでした。
xhost +localhost
は機能しませんでしたが、xhost +
(すべての制御を無効にする)DIDは機能します。
これは、設定ミスが原因である可能性があります pam_xauth PAMモジュール。 su
を実行すると、キーが一時ファイルにコピーされることになっています。あなたが説明する振る舞いは、一時ファイルを作成するpam_xauthと一致していますが、どういうわけかキーをコピーしていません(おそらく、~/.xauth/export
または/root/.xauth/import
があるため)。
それは私に起こりましたが、今回は$ COLORTERM変数を使用しました。
たとえば、COLORTERM = terminalを持つターミナルエミュレータでtmuxを起動し、その後、通常はCOLORTERM = gnome-terminalを持つ別のターミナルクライアントでも別のtmuxセッションを開始すると、この新しいセッションはクロスオーバーしてCOLORTERM = terminalを継承します。 。
これらのアサーションは、残念ながら、異なるターミナルエミュレーターを使用している場合でも、tmuxセッションが互いに分離されていないと結論付けるのに十分です。
Su sub Shellは、おそらく別のtmuxセッション、より具体的には作成された最初のtmuxセッションから$ XAUTHORITYを継承しています。