Xforwarding không cho phép chuyển đổi người dùng


7

Tôi đã vào một máy tính từ xa và xforwarding đang hoạt động tốt ... nhưng ngay sau khi tôi "sudo su -" hoặc "sudo su user2" thì nó không còn là lỗi X nữa

X11 connection rejected because of wrong authentication.
xterm Xt error: Can't open display: localhost:10.0

Bất kỳ ý tưởng?

Cảm ơn


1
điều này nhiều hơn do quyền X hơn là chuyển tiếp X - người dùng đã đăng nhập bằng SSH có quyền kết nối với màn hình X, nhưng khi bạn chuyển người dùng bằng 'sudo' thì người dùng bạn chuyển sang không có những quyền đó.
quack quixote

Cần có một công việc xung quanh mặc dù ... Tôi có quyền truy cập root, tôi sẽ có thể chạy một ứng dụng chuyển tiếp X11 như một người dùng khác. Làm thế nào để tôi làm cho nó hoạt động?
Jarvin

Câu trả lời:


6
  1. Kích hoạt chuyển tiếp X-11 trong ứng dụng khách của bạn
  2. Đăng nhập như người dùng bình thường của bạn
  3. echo $DISPLAY để có được màn hình liên quan
  4. xauth list, tìm số hiển thị tương ứng với số bạn tìm thấy ở # 3 và sao chép nó
  5. Sudo để root xauth add <paste in what you copied from #4>
  6. Bây giờ bạn có thể thực thi các lệnh với quyền root và sẽ có thể thấy kết nối Chuyển tiếp X11

4

Trước bạn sudo, làm cái này:

$ xauth extract /tmp/xauthstuff $DISPLAY

Sau bạn sudo, làm cái này:

# xauth merge /tmp/xauthstuff

công việc này là dành cho bạn?

PS nhớ rm /tmp/xauthstuff sau đó


3
Tôi đã thử lệnh đó và nó đã thất bại: $ xauth extract / tmp / xauth ware $ HIỂN THỊ Không tìm thấy kết quả khớp, tệp thẩm quyền "/ tmp / xauth ware" không được viết Ý tưởng?
djb

Làm gì echo $DISPLAY sản xuất?
tzot

HIỂN THỊ có giá trị localhost: 10.0
djb

3

Tôi không có quyền truy cập vào tài khoản root để thực hiện bất kỳ điều nào ở trên, vì vậy đây là một công việc xung quanh mà tôi đã sử dụng.

Đầu tiên, ssh vào tài khoản của bạn như bạn thường làm và kiểm tra mọi thứ đang hoạt động.

ssh -Y <you>@<your_server>

Tôi thường chỉ kích hoạt một XTerm để đảm bảo tôi có kết nối. Nếu tất cả đều tốt, sao chép tệp .XAuthority trong <you> thư mục nhà và đặt nó trong một thư mục công cộng.

cp ~/.Xauthority /tmp/tempXAuth

Hãy chắc chắn rằng bạn chmod 777 trên tệp đó trong thư mục chung để tài khoản sudo có thể sử dụng nó trong bước sau.

chmod 777 /tmp/tempXAuth

Bây giờ sudo cho người dùng bạn cần làm việc như

sudo su - <other_user>

một khi bạn là <other_user>, sao lưu .Xmasterity hiện có và sau đó sao chép "tốt".

cp ~/.Xauthority ~/.Xauthority.bak
cp /tmp/tempXAuth ~/.Xauthority

bạn sẽ có thể chạy bất kỳ chương trình X nào và yêu cầu chúng xác thực với phiên XServer hiện tại của bạn.


2

Trước bạn sudo su user2 kiểm tra các quyền trên $ XAUTHORITY của bạn:
echo $XAUTHORITY
ls -l $ XAUTHORITY


Nếu sau khi chuyển đổi người dùng, bạn vẫn tham chiếu cùng $ XAUTHORITY nhưng đã mất quyền đối với tệp, thì điều này sẽ phá vỡ chuyển tiếp X11.
Trong trường hợp của tôi, một giải pháp nhanh chóng là điều chỉnh các quyền của tệp trên tệp $ XAUTHORITY trước khi chuyển đổi người dùng.

Hãy ghi nhớ rằng nếu người dùng mà bạn không tin tưởng có được quyền truy cập vào tệp $ XAUTHORITY thì đây có thể là một vấn đề bảo mật.


1

Là người dùng mà bạn thường đăng nhập dưới dạng:

cd

sudo cp .Xauthority /root/

Sau đó, bạn có thể chuyển sang root bằng cách sử dụng:

sudo su
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.