Wayland 會支持圖形 sudo 嗎?
在 X 桌面上,我偶爾使用
gksudo
或只是sudo somegui
以另一個使用者身份啟動 GUI 應用程序,包括 root。我最近發現這在當代(2018 年初)Wayland 桌面上是不可能的。所有應用程序都必須以目前桌面使用者身份啟動,並且僅限於該使用者的權限。這是 Wayland 的永久功能(設計使然),還是 su-type 的使用是尚未實現的增強功能?
我正在尋找一份記錄在案的聲明(路線圖、設計頁面……),而不是偏好或意見。
這是 Wayland 的永久功能嗎(設計使然)
不,這與 Wayland 協議無關。這是一個環境設置的問題。
Wayland 使用套接字,其名稱儲存在
WAYLAND_DISPLAY
. 它位於XDG_RUNTIME_DIR
通常設置為僅供使用者訪問的地方。但是root也可以訪問它。(一些應用程序還考慮XDG_SESSION_TYPE
哪些可以有值wayland
或x11
決定是使用 X 還是 Wayland。)
sudo
刪除大多數環境變數,包括XDG_RUNTIME_DIR
和WAYLAND_DISPLAY
。您可以使用以下命令以 root 身份執行 Wayland 應用程序:
sudo env XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR WAYLAND_SOCKET=$WAYLAND_SOCKET waylandapplication
或更短的 with
-EH
以保留幾乎所有的環境變數(但設置HOME
為/root
)。這也將包括DISPLAY
XwaylandXAUTHORITY
訪問權限:sudo -EH application
但是,如果以 root 身份執行的應用程序在 中寫入任何內容
XDG_RUNTIME_DIR
,則可能會導致使用者應用程序的文件權限問題。但是,在 Wayland 中以 root 身份執行圖形應用程序比在 X11 中的安全問題要少得多。
為避免意外使用 X11,您可以不執行
DISPLAY
:sudo -EH env DISPLAY= waylandapplication
我正在尋找一份記錄在案的聲明(路線圖、設計頁面……),而不是偏好或意見。
Wayland 文件提到,
WAYLAND_DISPLAY
但我沒有找到任何關於XDG_RUNTIME_DIR
. 不過,包括參考實現在內的所有 Wayland 合成器都weston
依賴於XDG_RUNTIME_DIR
.如果
WAYLAND_DISPLAY
將在另一個位置,那麼在同一個 Wayland 顯示器上執行來自任意使用者的應用程序不會有問題。但XDG_RUNTIME_DIR
ist 指定為對登錄使用者進行限制,並應包含與使用者相關的套接字:$XDG_RUNTIME_DIR 定義相對於使用者特定的非必要執行時文件和其他文件對象(如套接字、命名管道等)應該儲存的基本目錄。該目錄必須由使用者擁有,並且他必須是唯一擁有對該目錄的讀寫權限的人。它的 Unix 訪問模式必須是 0700。
在 Wayland 上執行另一個使用者或 root 的問題與
XDG_RUNTIME_DIR
規範有關,而不是與 Wayland 本身有關。如果您指定具有任意訪問權限的自定義XDG_RUNTIME_DIR
輸入/tmp
(從而破壞其規範),則所有使用者都可以使用 Wayland 顯示。未來有一些希望不需要
XDG_RUNTIME_DIR
,但這取決於實施:Wayland docu chap.4:從 Wayland 1.15 開始,實現可以選擇支持位於文件系統中任意位置的伺服器套接字端點,方法是將 WAYLAND_DISPLAY 設置為伺服器端點偵聽的絕對路徑。