Không thể kết nối với Mir: Không thể kết nối với ổ cắm máy chủ: Không có tệp hoặc thư mục như vậy


18

Sau khi đăng nhập với tư cách người dùng khác, làm cách nào để chạy chương trình GUI?

thufir@doge:~$ 
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$ 
hawat@doge:~$ whoami
hawat
hawat@doge:~$ 
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$ 

Câu trả lời:


13

export DISPLAY=:0đã làm cho tôi. Đảm bảo bạn thực hiện lệnh trên hệ thống kết nối, không phải trên hệ thống bạn đang kết nối!


2
Trên máy tôi đang sử dụng để kết nối, không phải máy bạn đang kết nối.
dùng2938093

ahhh, đây là trên cùng một hộp. tài khoản khác.
Thufir

1
Không có bất kỳ ảnh hưởng nào đến máy tính của tôi
ComputerSellectist

không làm việc cho tôi Tôi không biết tại sao điều này lại xảy ra với tôi.
Chân Kim

6

Câu trả lời này hoạt động trên Ubuntu 16.04 và Mir của tôi (với sự điều chỉnh nhẹ):

Chạy lệnh x với tư cách người dùng khác bằng xauth

Kịch bản bash Wrapper:

Để thuận tiện, tôi đã tạo một tập lệnh bash bao bọc , mà bạn có thể muốn tải xuống /usr/local/bin/xsudovà đánh dấu thực thi ( chmod +x /usr/local/bin/xsudo).

Sau đó, chỉ cần chạy:

xsudo hawat firefox

Các lựa chọn thay thế tiềm năng:

  • Là một giải pháp thay thế đơn giản hơn nhiều, bạn có thể xem xét pam_xauth(các câu trả lời này ) Tuy nhiên, điều này không hiệu quả với tôi vì một số lý do. (Tôi vẫn gặp lỗi về việc firefox không thể kết nối với màn hình tại: 0)
  • Trong rất nhiều diễn đàn, bạn có thể thấy lệnh xhost +local:hoặc tương tự, sẽ làm gksudo -u hawat firefoxviệc mà không có bất kỳ tập lệnh bao bọc nào. Tuy nhiên, hãy lưu ý rằng điều này sẽ mở một lỗ hổng bảo mật : Bất kỳ người dùng hoạt động nào trên máy chủ cục bộ của bạn đều có thể truy cập bàn phím, chuột, màn hình, v.v.
  • Đã từng có sux , đã bị ngưng vì một số lý do - bạn vẫn có thể tải xuống và sử dụng nó. Theo như tôi có thể nói, nó đã làm một cái gì đó tương tự như kịch bản của tôi chỉ hơn rất nhiều. Thật không may, tôi không thể tìm ra, tại sao điều này không còn được duy trì. (Có lẽ vì bây giờ chúng ta nên sử dụng pam_xauth thay thế - s. Thay thế đầu tiên)

3

Sau khi dành quá nhiều thời gian cho việc này, tôi phát hiện ra rằng với Gnome trên Ubuntu 16.04, giá trị chính xác là DISPLAY=:1, không phải DISPLAY=:0như từ thời xa xưa.


1

xuất HIỂN THỊ =: 0 hoạt động tốt nhưng đây là giải pháp tạm thời vì bạn cần nhập dữ liệu này mỗi lần khi bạn mở thiết bị đầu cuối.

Giải pháp vĩnh viễn: Vấn đề có thể là do biến env_keep trong / etc / sudoers. Thêm dòng sau vào cuối / etc / sudoers bằng gedit hoặc sử dụng sudo visudo

Mặc định env_keep + = "HIỂN THỊ"

Lưu ý: Hãy nhớ luôn luôn sử dụng "+ =" trong khi thêm vào env_keep. Trong trường hợp nếu có bất kỳ env_keep nào khác với "=" thay đổi chúng thành "+ =" vì sử dụng "=" sẽ ghi đè các giá trị khác.


FYI: hãy nhớ rằng bạn không cần phải chỉnh sửa trực tiếp tệp sudoers, nhưng bằng cách sử dụng visudotrình bao bọc, cung cấp một số kiểm tra độ tỉnh táo trước khi viết tệp sudoers mới.
Hội chợ Gabriel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.