.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? 어떻게 시작할 수 있습니까?



답변

TL, DR : Apparmor의 결함이며 홈 디렉토리가 외부에 있기 때문 /home입니다.

Ubuntu 10.04의 기본 설치에서 apparmor 패키지는 우분투 표준 패키지 의 간접 권장 수준 종속성으로 가져옵니다 . 시스템 로그 ( /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 /etc/apparmor.d/usr.bin.evince) 의 기본 Evince 구성 은 매우 허용됩니다. 모든 홈 디렉토리에서 임의의 읽기 및 쓰기를 허용합니다. 그러나이 시스템의 내 홈 디렉토리는 기본 AppArmor 구성에 나열되지 않은 비표준 위치에 대한 심볼릭 링크입니다. 에서 액세스가 허용 /home되지만 내 홈 디렉토리의 실제 위치가 /elsewhere/home/gilles에 있으므로 액세스가 거부되었습니다.

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

  • Firefox는 기본적으로 비활성화되어 있습니다 (심볼릭 링크가있는 경우 /etc/apparmor.d/disable/usr.bin.firefox -> /etc/apparmor.d/usr.bin.firefox).
  • CUPS 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바이너리와 같은 다른 위치에 바이너리를 복사 할 수 ~/bin있으며 Apparmor 정책이 적용되지 않으므로 시작할 수는 있지만 시작할 수는 있지만 Apparmor가 제공하는 매우 제한된 추가 보안은 제공되지 않습니다).

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


답변

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

/elsewhere/home /home none bind

이 작업을 수행하면 어패럴은 /home다른 디렉토리 가 “어딘가”에 있다는 것을 알지 못 하므로 불만이 사라집니다.

이 방법의 장점은 각 응용 프로그램마다 다른 의류 구성 파일을 편집 할 필요없이 모든 응용 프로그램에서 작동한다는 것입니다.


답변