it-swarm-vi.tech

Cách sử dụng xauth để chạy ứng dụng đồ họa thông qua người dùng khác trên linux

Tài khoản người dùng thông thường của tôi là, giả sử, user1. Tôi đã tạo user2 riêng cho một số ứng dụng x mà tôi muốn chạy trong khi đăng nhập vào x với tên user1 nhưng theo cách đó sẽ ngăn không cho nó truy cập đọc/ghi vào dữ liệu user1. Tôi nghĩ rằng tôi có thể sử dụng xauth và Sudo/su cho user2 từ user1 để chạy ứng dụng này. Làm thế nào để tôi làm điều này? Tôi không chắc cách cấu hình xauth.

48
Phil

Tôi đã tìm thấy thứ gì đó phù hợp với tôi trên KDE

kdesu -u username /path/to/program
2
Phil

Để sử dụng xauth có chọn lọc, khi user1 chạy:

xauth list|grep `uname -n`

Điều này in các mục ủy quyền hexkey cho bạn. Bạn cũng có thể có các màn hình khác nhau được liên kết với các máy chủ đó.

Khi user2 đặt màn hình của bạn (giả sử trường hợp mặc định):

DISPLAY=:0; export DISPLAY

Sau đó chạy:

xauth add $DISPLAY . hexkey

Lưu ý dấu chấm sau $ HIỂN THỊ và trước hexkey.

Khi không còn cần truy cập, vì user2 bạn có thể chạy:

xauth remove $DISPLAY
33
Randall

Tôi đã đặt .zshrc Một dòng có export XAUTHORITY=~/.Xauthority Và bây giờ tôi có thể thực hiện Sudo -E xcommand. Sau rất nhiều lần googling, đối với tôi đây là cách dễ nhất.

12
kfl62

Đầu tiên: Không sử dụng xhost +, nó khá không an toàn (cho phép/từ chối chăn).

Thay vì sử dụng cơ chế X-Cookie:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

Ngoài ra, nếu bạn đã cài đặt sux, hãy sử dụng nó (xem câu trả lời của ehempel).

Trong cả hai trường hợp, user2 sẽ sử dụng cookie bí mật trong .Xmasterity để ủy quyền cho máy chủ X và không ai khác có quyền truy cập vào nó.

Ghi chú:

  • Tùy thuộc vào quyền truy cập tệp của bạn, bạn có thể phải sao chép .Xmasterity theo một cách khác.
  • Thay vì sao chép .Xauthority, bạn cũng có thể sử dụng xauth để trích xuất và sao chép khóa ủy quyền (xem câu trả lời của Randall). Nếu bạn có nhiều khóa trong .Xauthority tập tin này được lựa chọn nhiều hơn; nếu không thì đó là vấn đề của hương vị.
9
sleske

Giả sử debian hoặc ubfox (nên tương tự trên Red Hat/SUSE).

Sudo apt-get install sux
sux user -c 'command'
9
ehempel

Điều này sẽ khắc phục sự cố cho tất cả người dùng:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
7
JMS

Là gốc:

xhost local:yourusername

Tên người dùng của bạn là tên người dùng của bạn :)

Sau đó, hãy làm su như người dùng của bạn xclock sẽ hoạt động nếu được cài đặt

4
ACV

Đây chỉ là hack:

  • xauth + (không an toàn)
  • ssh -X user2 @ localhost (xấu xí)

sleske ở trên có, tôi nghĩ, giải pháp thích hợp.

2
alex

Cách này được thực hiện trong suse/opensuse: http://www.novell.com/support/kb/doc.php?id=700374

Chỉ cần sửa đổi /etc/pam.d/su, thêm tùy chọn (in đậm):

phiên tùy chọn pam_xauth.so systemuser = 1

Sau đó, bạn có thể chuyển đổi với su mà không cần -:

người dùng su2

và chạy ứng dụng đồ họa.

0
pojem