容器中的 Linux GUI 應用程式

最後更新: 2023-02-11 21:21:45 +0800 +0800
tags: 容器 | Linux | GUI | X11 | Wayland
原文以英文撰寫。您正在閱讀AI翻譯版本。

容器不會自動取得主機顯示工作階段的存取權。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 上閱讀或評論(發表評論需要登入)