
저는 PureOS GNU/Linux 배포판(Debian/Ubuntu 기반)을 사용합니다. 디스플레이 관리자로 XDM을 설치했습니다. X 세션에 루트로 로그인한 후 버그가 발생했습니다. 더 이상 루트가 아닌 X 세션에서 루트로 GUI 명령을 실행할 수 없습니다. 내 MIT-MAGIC-COOKIE-1이 잘못되었다는 오류 메시지를 받았습니다. .Xauthority 파일이나 $XAUTHORITY 변수와 관련된 것 같습니다.
나는 인터넷의 여러 포럼에서 문제에 대한 몇 가지 완화 방법을 보았습니다. xhost
다양한 형식의 인수를 사용하여 루트가 아닌 사용자로 실행합니다 . 그러나 이로 인해 시스템 인증이 비활성화되어 보안 취약점이 발생합니다. 게다가 이 작업은 X 세션마다 수행되어야 합니다. 실행하려면 sudo -sE
; 그러나 이는 루트가 아닌 환경을 보존합니다. 실행하려면 su-to-root -X -c [command] %U
; 그것은 효과가 있었다. 실행하려면 ssh -YXC [user]@[machine-name] [command]
; 그것은 효과가 있었다. 그러나 이는 원래 문제를 해결하지 못하는 해결 방법입니다.
DISPLAY=:0 /usr/bin/xhost +local:
작동하지 않았습니다. 어느 것도 아니다 su - root -c [command]
. 어느 것도 아니다 touch ~/.Xauthority; xauth generate $DISPLAY . trusted; xauth add ${HOST}$DISPLAY . $(xxd -l 16 -p /dev/urandom); xauth merge .Xauthority
; 그것은 나에게 오류를 주었다 unable to rename authority file /var/lib/xdm/authdir/authfiles/, use /var/lib/xdm/authdir/authfiles/-n
.
x11vnc 패키지가 도움이 되었다는 점에서 몇 가지 조사를 한 후에 올바른 매직 쿠키가 포함된 파일이 /var/lib/xdm/authdir/authfiles/A\:0-[whatever]
. 이상하게도 이를 새로운 .Xauthority 파일로 복사하는 것이 처음에는 작동하지 않았지만 두 번째 파일에서는 작동했습니다. 그래서 나는 이것을 만들었고 export XAUTHORITY="/var/lib/xdm/authdir/authfiles/A:0-[whatever]"
이것이 문제를 해결하는 것 같았습니다. 그러나 을 만들었는데 export XAUTHORITY="/var/lib/xdm/authdir/authfiles/*"
작동하지 않았습니다. 하지만 가장 이상한 점은 가 echo $XAUTHORITY
전체 파일 경로를 표시한다는 것입니다.
또한 루트가 아닌 사용자로부터 .Xauthority 파일과 $XAUTHORITY 변수를 모두 삭제하고 장치를 재부팅하여 이 계정에 부작용이 있는지 확인했습니다. 이상하게도 재부팅하기 전에 루트가 아닌 사용자는 GUI 명령 없이도 GUI 명령을 실행할 수 있습니다. 재부팅 후 루트가 아닌 사용자의 $XAUTHORITY 변수가 /tmp/.Xauth[whatever]
.
또한 컴퓨터를 재부팅할 때마다 루트가 아닌 사용자가 A:0-[whatever] 파일과 일치하는 새로운 매직 쿠키를 받는 것을 확인했습니다(16진 덤프에서는 일치하는 16진수 문자열이 포함되어 있음이 표시됨).
이로 인해 일련의 질문이 제기됩니다. 왜 루트 사용자가 시스템으로부터 임의의 매직 쿠키 수신을 중단했습니까? 이러한 매직 쿠키를 생성하고 전달하는 프로세스는 무엇입니까? 올바른 쿠키를 생성하는 루트 명령이 있습니까?