가장 먼저해야 할 일 : XDG_RUNTIME_DIR
첫 번째 질문 인 "XDG_RUNTIME_DIR은 무엇입니까?" 이는 로그인 할 때 자동으로 설정되는 환경 변수입니다. 실행중인 프로그램에 작은 임시 파일을 저장할 수있는 사용자 별 디렉토리를 찾을 수있는 위치를 알려줍니다. 참고 XDG_RUNTIME_DIR
로 설정 pam_systemd
(8) 그래서 실제로 관련이없는, X 문제입니다 (그래픽 프로그램을 실행)는, 당신은있을 것 같다.
문제 해결 방법
두 번째 질문 인 "이 문제를 해결하는 방법?" 아주 좋은 것입니다. 즉 , 수정의 내용 뿐만 아니라 직접 해결 하는 방법 에 관심이 있습니다. 시작하려면 첫 번째 오류 메시지를 먼저보십시오. 특히, 검색 No protocol specified
하거나 WARNING **: Could not open X display
, 문제가 함께 있음을 보여 주어야 X (라고도 은 X 윈도우 화 시스템 화면에 표시되는 방법을 그래픽 프로그램입니다). 이를 알고 있으면 많은 문제 해결 질문이 떠오를 것입니다.
X 디스플레이
다음 질문은이 "X 디스플레이" 가 무엇입니까? "디스플레이"는 화면의 주소입니다. [*] 화면에 쓰려는 프로그램은 주소를 알아야합니다. DISPLAY 환경 변수를 확인하여 X 디스플레이가 무엇인지 확인할 수 있습니다.
echo $DISPLAY
다음 sudo
을 입력하여 DISPLAY가 어떻게 생각 하는지 확인할 수 있습니다 .
sudo -s
echo $DISPLAY
exit
아무것도 표시되지 않으면 문제입니다. (아래 수정 참조).
XAUTHORITY
그러나 그것이 문제가 아니며에 DISPLAY
올바르게 설정되어 sudo
있다면 어떨까요? 그렇다면 X에 다른 사용자가 내 디스플레이에 글을 쓰지 못하게하는 일종의 권한이 있습니까? 당신이 생각하는 경우, 당신이 바로 것, X는 두 가지 인증 방법을 가지고 xauth
와 xhost
. 오늘날 가장 일반적으로 사용되는 것은 xauth
(1)XAUTHORITY
환경 변수 를 사용하는 것입니다. 다시 한 번 제대로 설정되어 있는지 확인하십시오 sudo
.
echo $XAUTHORITY
sudo -s
echo $XAUTHORITY
exit
경우 XAUTHORITY
당신을 위해 홈 디렉토리에있는 파일을 가리키고 있지만 실행 그것의 빈은 sudo
, 다음 문제의 그.
FIX : 환경 변수 저장
그래서 수정은 무엇입니까? 어느 경우 DISPLAY
나 XAUTHORITY
환경 변수가시 저장되지 않아요 sudo
, 당신은 말할 수있다 sudo
(8) 사용하여 환경을 보존하기 위해 -E
과 같이, 옵션 :
sudo -E evince
더 좋은 방법 : env_keep
잠깐만, -E
모든 것이 마술처럼 작동한다면 왜 이것이 기본이 sudo
아닌가? 그 대답은 잠재적 인 보안 위험이라는 것입니다. 환경 변수는 프로그램 작동 방식에 영향을 미치며 사용자 계정에서 루트로 모두 내보내지는 것을 원하지 않습니다. 이를위한 "올바른"방법은 (8)을 사용하여 ( 5) 파일에 행 Defaults env_keep += "DISPLAY XAUTHORITY"
을 추가하는 것입니다 . 다음을 실행하여 sudo가 유지하는 환경 변수를 확인할 수 있습니다.sudoers
visudo
sudo sudo -V
(예, sudo
두 번 입력하십시오 ). 줄을 기본 sudoers 파일 ( /etc/sudoers
)이 아니라 시스템을 업그레이드 할 때 덮어 쓰지 않는 로컬 파일에 넣는 것이 좋습니다 . 당신은 그렇게 할 수 있습니다 :
sudo visudo -f /etc/sudoers.d/local
그러나 위의 어느 것도 작동하지 않으면 어떻게 될까요?
나는 이것이 상당히 철저한 대답이라고 생각하지만 여전히 문제가있는 경우 다른 제안이 있습니다. xhost
(1) 을 사용 하여 로컬 호스트 (시스템)의 특정 사용자에게 액세스 권한을 부여 할 수 있습니다 .
xhost si:localuser:root
이 경우 프로그램 root
을 sudo
실행 하는 계정이므로 사용자 이름으로 지정 됩니다.
[*] : Q : 하나의 화면 만 있는데 X 디스플레이에 "주소"가 필요한 이유는 무엇입니까? A : X 는 컴퓨터뿐만 아니라 인터넷에서도 작동 할 수 있기 때문 입니다. X를 사용하면 컴퓨터에서 다른 인터넷 호스트에 표시되는 프로그램과 화면에 표시되는 다른 호스트에있는 프로그램을 쉽게 실행할 수 있습니다 (허가를받은 경우).