TL, DR: đó là lỗi của Apparmor và do thư mục nhà của tôi ở bên ngoài /home
.
Theo cài đặt mặc định của Ubuntu 10.04, gói apparmor được kéo vào dưới dạng phụ thuộc cấp độ Khuyến nghị gián tiếp của gói tiêu chuẩn Ubuntu . Nhật ký hệ thống ( /var/log/syslog
) cho thấy Apparmor đang từ chối nỗ lực đọc của 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"
Cấu hình Evince mặc định cho Apparmor (in /etc/apparmor.d/usr.bin.evince
) rất dễ cho phép: nó cho phép đọc và ghi tùy ý trong tất cả các thư mục chính. Tuy nhiên, thư mục chính của tôi trên máy này là một liên kết tượng trưng đến vị trí không chuẩn không được liệt kê trong cấu hình AppArmor mặc định. Quyền truy cập được cho phép theo /home
, nhưng vị trí thực sự của thư mục nhà của tôi là /elsewhere/home/gilles
, vì vậy quyền truy cập bị từ chối.
Các ứng dụng khác có thể bị ảnh hưởng bởi vấn đề này bao gồm:
- Firefox, nhưng hồ sơ của nó bị tắt theo mặc định (bởi sự hiện diện của một liên kết tượng trưng
/etc/apparmor.d/disable/usr.bin.firefox -> /etc/apparmor.d/usr.bin.firefox
).
- CUPS in PDF; Tôi đã không thử nghiệm, nhưng tôi hy vọng nó sẽ thất bại trong việc viết
~/PDF
.
Cách khắc phục của tôi là chỉnh sửa /etc/apparmor.d/tunables/home.d/local
và thêm dòng
@{HOMEDIRS}+=/elsewhere/home/
để nhận biết vị trí không chuẩn của các thư mục chính (lưu ý rằng cuối cùng /
là quan trọng; xem các bình luận trong /etc/apparmor.d/tunables/home.d/ubuntu
), sau đó chạy /etc/init.d/apparmor reload
để cập nhật cài đặt Apparmor.
Nếu bạn không có đặc quyền của quản trị viên và quản trị viên hệ thống không phản hồi, bạn có thể sao chép evince
tệp nhị phân sang một vị trí khác ~/bin
, và nó sẽ không được chính sách Apparmor bảo vệ (vì vậy bạn sẽ có thể bắt đầu nó, nhưng sẽ không được cung cấp bảo mật bổ sung rất hạn chế mà Apparmor cung cấp).
Vấn đề này đã được báo cáo là lỗi Ubuntu # 447292 . Nghị quyết xử lý trường hợp khi một số người dùng có thư mục chính của họ như được liệt kê ở /etc/passwd
bên ngoài /home
, nhưng không phải là trường hợp như của tôi, nơi /home/gilles
có một liên kết tượng trưng.