Sudo

Wayland 會支持圖形 sudo 嗎?

  • April 5, 2021

在 X 桌面上,我偶爾使用gksudo或只是sudo somegui以另一個使用者身份啟動 GUI 應用程序,包括 root。我最近發現這在當代(2018 年初)Wayland 桌面上是不可能的。所有應用程序都必須以目前桌面使用者身份啟動,並且僅限於該使用者的權限。

這是 Wayland 的永久功能(設計使然),還是 su-ty​​pe 的使用是尚未實現的增強功能?

我正在尋找一份記錄在案的聲明(路線圖、設計頁面……),而不是偏好或意見。

這是 Wayland 的永久功能嗎(設計使然)

不,這與 Wayland 協議無關。這是一個環境設置的問題。

Wayland 使用套接字,其名稱儲存在WAYLAND_DISPLAY. 它位於XDG_RUNTIME_DIR通常設置為僅供使用者訪問的地方。但是root也可以訪問它。(一些應用程序還考慮XDG_SESSION_TYPE哪些可以有值waylandx11決定是使用 X 還是 Wayland。)

sudo刪除大多數環境變數,包括XDG_RUNTIME_DIRWAYLAND_DISPLAY

您可以使用以下命令以 root 身份執行 Wayland 應用程序:

sudo env XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR WAYLAND_SOCKET=$WAYLAND_SOCKET waylandapplication

或更短的 with-EH以保留幾乎所有的環境變數(但設置HOME/root)。這也將包括DISPLAYXwaylandXAUTHORITY訪問權限:

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_DIRist 指定為對登錄使用者進行限制,並應包含與使用者相關的套接字:

$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 設置為伺服器端點偵聽的絕對路徑。

引用自:https://unix.stackexchange.com/questions/422040