容器不會自動取得主機顯示工作階段的存取權。GUI 用戶端需要適當的顯示通訊端、 環境變數及認證;公開這些項目會賦予容器實質控制使用者工作階段的能力,因此 只應對受信任的映像檔如此操作。
X11 #
對於 X11,請掛載主機通訊端目錄(通常是 /tmp/.X11-unix),並傳遞
DISPLAY。用戶端也需要相符的 Xauthority Cookie;通常的做法是掛載一個
範圍受到嚴格限制的 Cookie 檔案,並設定 XAUTHORITY。請勿使用 xhost +;
該命令會停用顯示服務的存取控制。X11Docker 可以在這項設定外建立限制更嚴格的
包裝層。
Wayland #
Wayland 用戶端會連線至
$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY,常見位置為
/run/user/<uid>/wayland-0。容器必須以相容的使用者身分執行,且只能取得
必要的執行階段通訊端與環境變數。許多桌面工作階段都提供 Xwayland,因此 X11
用戶端也可以採用 X11 途徑。原生 Wayland 支援可避開該相容層,但不代表與
不受信任的程式碼共用通訊端是安全的。
遠端桌面 #
對於遠端或串流應用程式,VNC 往往能提供更妥善的隔離邊界:伺服器擁有 獨立的桌面,而用戶端看到的是經過編碼的像素,不是主機的高權限顯示 通訊端。需要透過瀏覽器提供服務、錄製內容或隔離工作階段時,VNC 也很實用。
評論
在 GitHub 上閱讀或評論(發表評論需要登入)