Một chương trình X cần hai thông tin để kết nối với màn hình X.
Nó cần địa chỉ của màn hình, mà thường là :0khi bạn đang đăng nhập tại địa phương hoặc :10, :11vv khi bạn đang đăng nhập từ xa (nhưng số lượng có thể thay đổi tùy thuộc vào có bao nhiêu kết nối X đang hoạt động). Địa chỉ của màn hình thường được chỉ định trong DISPLAYbiến môi trường.
Nó cần mật khẩu cho màn hình. Mật khẩu hiển thị X được gọi là cookie ma thuật . Cookie ma thuật không được chỉ định trực tiếp: chúng luôn được lưu trữ trong các tệp thẩm quyền X, đó là một tập hợp các bản ghi của biểu mẫu hình thức hiển thị :42có cookie 123456. Tệp thẩm quyền X thường được chỉ định trong XAUTHORITYbiến môi trường. Nếu $XAUTHORITYkhông được đặt, chương trình sẽ sử dụng ~/.Xauthority.
Xem Mở cửa sổ trên màn hình X từ xa (tại sao "Không thể mở màn hình")? để biết thêm chi tiết.
Trong trường hợp của bạn, DISPLAYđược đặt nhưng rõ ràng các chương trình không thể tìm thấy tệp cookie. Kiểm tra giá trị XAUTHORITYtrong phiên của bạn và dưới su.
Nếu XAUTHORITYkhông được thiết lập trong phiên của bạn và suthiết lập HOMEbiến môi trường vào thư mục gốc của nhà, thì bạn cần phải thiết lập XAUTHORITYđể /home/msz/.Xauthoritynơi /home/mszlà thư mục home của bạn.
Nếu suloại bỏ XAUTHORITYkhỏi môi trường, hãy đặt nó trở lại hoặc cấu hình suđể không làm điều này.
Nếu thư mục chính của bạn nằm trên một số hệ thống tập tin như NFS, root có thể không thể đọc trực tiếp. Trong trường hợp đó, bạn có thể sao chép .Xauthoritytệp vào một vị trí khác trên hệ thống tệp không phải NFS:
XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY
export $(dbus-launch)hoặc sử dụngxhost [+]để có thể khởi chạy chương trình bằng X và tài khoản siêu người dùng của bạn.