Ketika saya beralih dari su+bash
ke su+tmux+zsh
Saya perhatikan bahwa saya mendapatkan $XAUTHORITY
variabel didefinisikan sebagai /root/.xauthXXXXXX
dimana XXXXXX
adalah 6 karakter alfanumerik acak. Dengan konfigurasi sebelumnya, X bekerja dengan root dengan sempurna, tetapi sekarang saya perlu menyalin ~username/.Xauthority
ke $XAUTHORITY
.
Variabel tidak didefinisikan di mana pun; Saya memeriksa .zshrc
, /etc/profile*
, /etc/profile.d/*
dll.
# 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
alias su - toor
dan membuka tmux
sebagai cangkang. toor adalah alias root dengan shell yang berbeda.
Saya baru saja menemukan bahwa itu muncul di su normal juga. Itu tidak dilakukan beberapa waktu lalu.
set-environment
tidak berhasil.
xhost +localhost
tidak berfungsi, tetapi xhost +
(menonaktifkan semua kontrol) BERHASIL.
Jawaban yang Diterima:
Inilah yang menurut saya sedang terjadi.
Saat Anda menggunakan su
dan bash
, su
-session mewarisi lingkungan dengan pengecualian USER
, HOME
dan SHELL
, jadi XAUTHORITY
masih menunjuk ke ~username/.Xauthority
dan semuanya baik-baik saja. Namun (dari halaman manual), ketika tmux
server dimulai:
… tmux menyalin lingkungan ke dalam lingkungan
global; selain itu, setiap sesi memiliki lingkungan sesi. Saat
jendela dibuat, sesi dan lingkungan global digabungkan dengan
lingkungan sesi yang menggantikan variabel apa pun yang ada di keduanya.
dan saya menduga (tanpa mengetahui detail permintaan) bahwa ketika Anda mengganti kredensial, su
mencoba menemukan .Xauthority
di /root
dan karena tidak dapat menemukannya saat Anda perlu menjalankan X
aplikasi, itu menciptakan satu. Saya dapat memikirkan beberapa cara yang dapat Anda coba untuk memperbaikinya:
- Aktifkan
su
dengan menggunakansu -
. Ini akan menyalin lingkungan pengguna sebenarnya - Tambahkan
set-environment <name> <value>
ketmux
. Anda konfigurasi.
Sayangnya, saya tidak dapat menguji ini karena saya baru saja beralih ke i3 (yang luar biasa) dan saya tidak memiliki mesin cadangan.