`$XAUTHORITY`는 su+tmux에 "아무데도" 나타나지 않습니다.

`$XAUTHORITY`는 su+tmux에 "아무데도" 나타나지 않습니다.

su+bash에서 으로 전환했을 때 변수가 6개의 임의의 영숫자 문자 로 정의 su+tmux+zsh되어 있다는 것을 알았습니다 . X는 이전 구성을 사용하여 루트와 완벽하게 작동했지만 이제는 .$XAUTHORITY/root/.xauthXXXXXXXXXXXX~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. tmuxtoor는 다른 쉘을 사용하는 루트의 별칭입니다.

방금 일반 su에도 나타나는 것을 발견했습니다. 얼마 전에는 그러지 않았습니다.

set-environment작동 안함.

xhost +localhost작동하지 않지만 xhost +(모든 컨트롤을 비활성화하면) 작동합니다.

답변1

이것이 내 생각에 일어나고 있는 일이다.

suand 를 사용하면 bash-session은 , suand 를 제외한 환경을 상속하므로 여전히 를 가리키며 모든 것이 정상입니다. 그러나 (부터USERHOMESHELLXAUTHORITY~username/.Xauthority남성페이지), tmux서버가 시작될 때:

... tmux는 환경을 전역 환경에 추가로 복사하며 세션당 세션 환경이 있습니다. 창이 생성되면 세션 환경과 전역 환경이 병합되고 세션 환경은 두 환경 모두에 존재하는 모든 변수를 재정의합니다.

나는 (통화 세부 사항을 알지 못한 채) 자격 증명을 전환할 때 을 su찾으려고 시도 .Xauthority하고 /root응용 프로그램을 실행해야 할 때 자격 증명을 찾을 수 없기 때문에 X자격 증명을 생성한다고 의심합니다. 이 문제를 해결하기 위한 몇 가지 방법을 생각해 볼 수 있습니다.

  1. su를 사용하여 호출됩니다 su -. 실제 사용자 환경을 복제합니다.
  2. 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를 상속받을 수 있습니다.

관련 정보