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作業。
承認された回答:
これが私が起こっていると思うことです。
su
を使用している場合 およびbash
、 su
-sessionは、 USER
を除いて環境を継承します 、 HOME
およびSHELL
したがって、 XAUTHORITY
引き続き〜username / .Xauthority
を指します そして、すべてが大丈夫です。ただし、(マニュアルページから) tmux
サーバーが起動しました:
…tmuxは環境をグローバル
環境にコピーします。さらに、各セッションにはセッション環境があります。
ウィンドウが作成されると、セッション環境とグローバル環境がマージされ、
セッション環境が両方に存在する変数をオーバーライドします。
クレデンシャルを切り替えると、 su
がsu
だと思います(呼び出しの詳細はわかりません)。 .Xauthority
を見つけようとします / root
内 X
を実行する必要があるときに1つを見つけることができないため アプリ、それは1つを作成します。これを修正する方法をいくつか考えられます:
-
su
を呼び出しますsu-
を使用する 。これにより、実際のユーザーの環境がコピーされます -
set-environment
を追加しますtmux
に 構成。
残念ながら、最近i3に切り替えて(これは素晴らしいです)、予備のマシンがないため、これをテストできません。