![`$XAUTHORITY`는 su+tmux에 "아무데도" 나타나지 않습니다.](https://linux55.com/image/41787/%60%24XAUTHORITY%60%EB%8A%94%20su%2Btmux%EC%97%90%20%22%EC%95%84%EB%AC%B4%EB%8D%B0%EB%8F%84%22%20%EB%82%98%ED%83%80%EB%82%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
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를 상속받을 수 있습니다.