Tôi đã có cùng một câu hỏi như bạn nhưng đối với một người dùng bình thường. Giả sử tôi muốn bắt đầu firefox bằng tài khoản người dùng foo. Tôi đang đăng nhập dưới dạng thanh:
[bar@localhost ~]$ sudo -u foo -H firefox
Đáng buồn là lệnh đó không thành công với cùng một lỗi như trong câu hỏi (nghĩa là không có giao thức nào được chỉ định & không thể mở hiển thị)
Giải pháp của tôi chỉ đơn giản là thêm người dùng foo vào danh sách quyền truy cập được ủy quyền vào máy chủ X.
xhost si:localuser:foo
Và thế là xong, tôi đã có thể khởi chạy Firefox (và ứng dụng X khác) bằng cách sử dụng sudo
và người dùng foo.
Bối cảnh : Trên X Window, có kiến trúc máy khách / máy chủ. Khi bạn khởi chạy một ứng dụng, bạn yêu cầu ủy quyền máy chủ X hiển thị nó. Theo mặc định, khi bạn mở một phiên (bạn đăng nhập bằng đồ họa), bạn (người dùng của bạn) rõ ràng được phép giao tiếp với máy chủ và hiển thị các ứng dụng. Những người dùng khác không có quyền này trừ khi bạn chỉ định nó. xhost
là một công cụ để thao tác danh sách các quyền. Các si
chỉ ra rằng sự cai trị là phía máy chủ và nó cho phép người dùng địa phương foo
để ứng dụng hiển thị. X Window rất mạnh về vấn đề này và bạn có thể hiển thị các ứng dụng từ xa cục bộ bằng cách chơi với DISPLAY
biến môi trường và xhost
(nhưng không giới hạn ở chúng). Thời xưa, khi người ta gõxhost +
và hoàn toàn cho phép mọi người sử dụng phiên X của họ, có thể hiển thị ứng dụng trên màn hình của họ để chơi khăm ;-) ngày nay không nhiều vì mọi người ngày càng ít sử dụng kiến trúc máy khách / máy chủ X Window (ít nhất là cho những gì tôi quan sát được 10 năm qua).
Tái bút: Tôi đã làm điều này để khởi chạy Firefox theo kiểu "tù" (để tránh lỗ hổng như pdf.js trong tương lai). Nhưng tôi nhanh chóng phát hiện ra rằng việc gọi Firefox qua sudo sẽ không cho phép nó truy cập âm thanh cũng như phần cứng video. Nhưng có một anh chàng giải thích rõ ràng cách kích hoạt tăng tốc phần cứng và âm thanh video khi gọi Firefox qua sudo . YMMV với các hướng dẫn này, ví dụ: tôi vẫn có quyền bị từ chối với âm thanh nhưng video vẫn ổn (đã được thử nghiệm trên Fedora 22 với SELinux ON).