web-dev-qa-db-ja.com

`$ XAUTHORITY`はsu + tmuxの 'nowhere'から表示されます

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

susu - toorにエイリアスされ、tmuxをシェルとして開きます。 toorは、異なるシェルを持つルートのエイリアスです。

通常のsuにも表示されることを発見しました。それはしばらく前にはしませんでした。

set-environmentが機能しませんでした。

xhost +localhostは機能しませんでしたが、xhost +(すべての制御を無効にする)DIDは機能します。

4

これは、設定ミスが原因である可能性があります 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を継承しています。

0
marcio