.Xauthority를 ​​읽을 수 없기 때문에 Evince가 시작되지 않습니다.

.Xauthority를 ​​읽을 수 없기 때문에 Evince가 시작되지 않습니다.

저는 Ubuntu 10.04(lucid)를 실행하는 시스템에 X를 전달하여 SSH를 통해 원격으로 로그인했습니다. 대부분의 X11 응용 프로그램(예: xterm, gnome-terminal)은 잘 작동합니다. 그러나 Evince는 시작되지 않습니다. 파일이 존재하고 분명히 읽을 수 있음에도 불구하고 읽을 수 없는 것 같습니다 ~/.Xauthority(올바른 권한이 있고 다른 응용 프로그램이 이를 잘 읽습니다).

$ evince
X11 connection rejected because of wrong authentication.
Cannot parse arguments: Cannot open display:
$ echo DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY
DISPLAY=localhost:10.0 XAUTHORITY=
$ strace evince
access("/home/gilles/.Xauthority", R_OK) = 0
open("/home/gilles/.Xauthority", O_RDONLY) = -1 EACCES (Permission denied)
$ ls -l ~/.Xauthority
-rw------- 1 gilles gilles 496 Jul  5 13:34 /home/gilles/.Xauthority

읽을 수 없는 Evince의 특별한 점은 무엇입니까 ~/.Xauthority? 어떻게 시작하게 할 수 있나요?

답변1

TL,DR: Apparmor의 잘못이고 내 홈 디렉토리가 외부에 있기 때문입니다 /home.

Ubuntu 10.04의 기본 설치에서의류패키지는 간접적인 권장 수준 종속성으로 끌어옵니다.우분투 표준패키지. 시스템 로그( /var/log/syslog)에는 Apparmor가 Evince의 읽기 시도를 거부하고 있음이 표시됩니다 ~/.Xauthority.

Jul 5 17:58:31 darkstar kernel: [15994724.481599] type=1503 audit(13415 03911.542:168): operation="open" pid=9806 parent=9805 profile="/usr/bin/evince" requested_mask="r::" denied_mask="r::" fsuid=1001 ouid=1001 name="/elsewhere/home/gilles/.Xauthority"

Apparmor(in)의 기본 Evince 구성은 /etc/apparmor.d/usr.bin.evince매우 허용적입니다. 즉, 모든 홈 디렉터리에서 임의의 읽기 및 쓰기를 허용합니다. 그러나 이 시스템의 홈 디렉터리는 기본 AppArmor 구성에 나열되지 않은 비표준 위치에 대한 기호 링크입니다. 에서는 접근이 허용되지만 /home, 내 홈 디렉토리의 실제 위치는 /elsewhere/home/gilles이므로 접근이 거부됩니다.

이 문제의 영향을 받을 수 있는 다른 응용 프로그램은 다음과 같습니다.

  • Firefox이지만 프로필은 다음과 같습니다.기본적으로 비활성화됨(심볼릭 링크가 있는 경우 /etc/apparmor.d/disable/usr.bin.firefox -> /etc/apparmor.d/usr.bin.firefox)
  • 컵 PDF 인쇄; 테스트하지는 않았지만 ~/PDF.

/etc/apparmor.d/tunables/home.d/local내 수정은 줄을 편집하고 추가하는 것이 었습니다.

@{HOMEDIRS}+=/elsewhere/home/

홈 디렉토리의 비표준 위치를 인식하려면(최종 위치가 /중요합니다. 의 설명 참조 /etc/apparmor.d/tunables/home.d/ubuntu) 실행하여 /etc/init.d/apparmor reloadApparmor 설정을 업데이트합니다.

관리자 권한이 없고 시스템 관리자가 응답하지 않는 경우 바이너리를 evince와 같은 다른 위치에 복사하면 ~/binApparmor 정책이 적용되지 않으므로 시작할 수는 있지만 시작할 수는 있습니다. Apparmor가 제공하는 매우 제한적인 추가 보안은 제공되지 않습니다.

이 문제는 다음과 같이 보고되었습니다.우분투 버그 #447292. 해결 방법은 일부 사용자가 /etc/passwd외부 에 나열된 홈 디렉토리를 가지고 있는 경우를 처리 /home하지만 내 경우와 같이 /home/gilles심볼릭 링크가 있는 경우는 처리하지 않습니다.

답변2

같은 문제가 있었고 귀하의 답변이 올바른 방향을 제시해주었습니다. 의류 구성을 편집할 필요가 없는 다른 솔루션을 찾았습니다. 에 대한 액세스를 리디렉션하기 위해 심볼릭 링크를 사용하는 대신 에 옵션을 /home사용하십시오 . 다음 줄을 추가했습니다 .bindmount/etc/fstab

/elsewhere/home /home none bind

이렇게 하면 Apparmor는 아래의 디렉토리가 /home"실제로" 다른 곳에 있다는 사실조차 알지 못하므로 불만 사항은 사라질 것입니다.

이 접근 방식의 장점은 각각의 다른 의류 구성 파일을 편집할 필요 없이 모든 애플리케이션에서 작동한다는 것입니다.

관련 정보