Thay thế cho sux
, để chạy lệnh đồ họa một cách an toàn ( firefox-esr
ví dụ bên dưới) như $AUTHUSER
( guest
ví dụ bên dưới):
AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K
mã này:
- cung cấp cho
guest
người dùng quyền truy cập vào người dùng hiện tại của bạn $DISPLAY
thông quaxhost +SI:localuser:guest
- sử dụng
ssh-askpass
để đồ họa hỏi bạn mật khẩu (tất nhiên, bạn có thể sử dụng sudoers(5)
NOPASSWD:
để tránh điều này, nếu chính sách bảo mật của bạn cho rằng nó ổn. Hoặc bạn có thể sử dụng các askpass
chương trình khác hoặc chỉ định chúng trong các tệp cấu hình (xem sudo(8)
chi tiết về --askpass
)
- nếu mật khẩu ổn (và bạn có quyền trong
sudoers(5)
) thì nó sẽ chạy lệnh /usr/bin/firefox-esr
như một người dùng khác ( guest
)
- sau khi chương trình hoàn tất, quyền cho người dùng khác (
guest
) truy cập của bạn $DISPLAY
bị thu hồi thông quaxhost -SI:localuser:guest
cuối cùng, sudo -K
xóa mật khẩu đã lưu trong bộ nhớ cache, vì vậy lần gọi tiếp theo ssh-askpass
sẽ yêu cầu bạn nhập lại mật khẩu (thay vì sử dụng mật khẩu đã lưu trong bộ nhớ cache)
trong khi nó là công việc ít hơn những gì gksu(8)
hoặc sux(8)
đã làm, nó có thể được kịch bản, và nó là an toàn hơn:
xhost +
(bất kỳ người dùng nào cũng sẽ có quyền truy cập vào màn hình đồ họa của bạn miễn là nó có hiệu lực)
- người dùng khác có thể đọc được ~ / .xauth (người dùng đó truy cập không xác định vào màn hình của bạn)
- what
gksu
/ sux
did (bản sao tạm thời ~/.Xauthority
, cho phép người dùng được chỉ định sao chép MIT-MAGIC-COOKIE-1
và tiếp tục sử dụng màn hình của bạn ngay cả khi gksu / sux kết thúc (miễn là bạn không tắt máy hoặc đăng xuất khỏi màn hình - trình bảo vệ màn hình, ngủ đông, v.v. bánh quy).
vì nó sẽ chỉ cho phép một người dùng cục bộ truy cập vào màn hình của bạn, và sau đó chỉ khi lệnh chạy (khi lệnh kết thúc, $AUTHUSER
sẽ không còn có thể truy cập vào màn hình của bạn theo bất kỳ cách nào).
Một sự thay thế an toàn là ssh -X
(không có -Y
mà thực sự làm cho bạn kém an toàn! Thấy ForwardX11Trusted
ở ssh_config(5)
để biết chi tiết), như là dễ dàng hơn để sử dụng nếu bạn không kịch bản nó, nhưng nó gây ra overhead additinal (ví dụ. Nó là chậm hơn) và một số chương trình có thể không hoạt động chính xác mà không an toàn -Y
.
$XAUTHORITY
vẫn được đặt thành user1~/.Xauthority
, mà tôi đoán là chương trình sẽ cố đọc và thất bại vì tệp đó thường có chế độ 0600 (-rw-------
), nghĩa là nó không khả dụng để đọc bởi bất kỳ ai trong nhóm "khác", bao gồm user2. Có nghĩa là nếu bạnchmod o+r ~/.Xauthority
(như user1), bạn sẽ hack theo cách của bạn xung quanh vấn đề này. Tôi đã viết một kịch bản chứng minh điều này.