su+bash
からに切り替えたとき、変数が6つのランダムな英数字で定義されてsu+tmux+zsh
いることがわかりました。 Xは、以前の設定を使用してルートと完全に動作しましたが、今は 。$XAUTHORITY
/root/.xauthXXXXXX
XXXXXX
~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 +
(すべてのコントロールを無効にすると)動作します。
答え1
これが私の考えに起こっていることだ。
su
and を使用するとbash
-session は、su
and を除く環境を継承するので、まだを指し、すべてが正常です。しかし(以USER
HOME
SHELL
XAUTHORITY
~username/.Xauthority
男性ページ)、tmux
サーバーが起動したとき:
... tmuxは環境をさらにグローバル環境にコピーし、セッションごとのセッション環境を持ちます。ウィンドウが作成されると、セッション環境とグローバル環境がマージされ、セッション環境は両方の環境に存在するすべての変数をオーバーライドします。
私は(通話の詳細を知らずに)資格情報を切り替えるときに検索しようsu
と.Xauthority
し、/root
アプリケーションを実行する必要があるときに資格情報が見つからないため、X
資格情報を生成すると疑います。この問題を解決するためのいくつかの方法を考えてみましょう。
su
を使用して呼び出されますsu -
。実際のユーザー環境を複製します。set-environment <name> <value>
設定に追加しますtmux
。
残念ながら、最近切り替えたのでこれをテストすることはできません。i3(すごいです)そしてバックアップマシンもありません。
答え2
構成エラーが原因である可能性があります。pam_xauthPAMモジュール。実行すると、キーが一時ファイルにコピーされますsu
。説明する動作は、pam_xauthが一時ファイルを生成しても何らかの方法でキーをコピーしないことと一致します(おそらくaまたは~/.xauth/export
aがあるため/root/.xauth/import
)。
答え3
これが私に起こりましたが、今回は$ COLORTERM変数でした。
たとえば、COLORTERM=terminus を使用して端末エミュレータで tmux を起動し、後で通常 COLORTERM=gnome-terminal を使用する別の端末クライアントで別の tmux セッションを開始すると、この新しいセッションはクロスして COLORTERM=terminus を継承します。 。
残念ながら、これらの主張は、他の端末エミュレータを使用してもtmuxセッションが互いに隔離されないという結論を下すのに十分です。
suサブシェルは、他のtmuxセッション(より具体的に作成された最初のtmuxセッション)から$ XAUTHORITYを継承できます。