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
sudengan 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.