如何在 Linux 中使用 Run0
Run0 是一個針對基於 Systemd 的 Linux 發行版的全新創新權限提升程式。它為 sudo 和 doas 等傳統升級應用程式提供了輕量級且「無配置」的替代方案。在這裡,我們向您展示使用 Run0 升級 Linux 系統指令的基礎知識。
在此之前,您可能想了解什麼是 Run0 以及它與 sudo 有何不同。
如何以不同使用者身分執行程式
權限提升應用程式最常見的用途之一是以 root 使用者身分執行命令。對此,在Run0中點選root使用者需要在要執行的指令前面加入run0。例如,以下命令在只能由 root 存取的目錄中建立一個新資料夾:
這將彈出一個 CLI 密碼提示或一個小的 GUI 窗口,要求您輸入目前使用者的密碼。
與sudo和doas類似,Run0在執行指令時也可以切換到非root使用者。為此,請新增--user
標誌,後跟要執行命令的使用者名稱:
提供您要切換到的使用者的密碼,然後按Enter。
如何切換到不同使用者的 shell
權限提升應用程式的另一個關鍵部分是它能夠將使用者降到 root shell。這使您能夠以 root 使用者身分與系統進行交互,並從 CLI 執行更複雜的命令。
在 Run0 中,您可以透過執行程式來完成此操作,無需任何其他參數。
就像以 root 身分執行程式一樣,也可以使用帶有標誌的 Run0--user
以特定使用者身分啟動 shell 會話:
最重要的是,run0 允許您為非 root 使用者建立具有臨時群組權限的 shell 會話。如果您想要存取鎖定在某個使用者和群組後面的資料夾而不需要降至 root 權限,這非常有用。
例如,以下命令授予「alice」使用者對「www-data」群組的臨時存取權限:
您也可以使用該--chdir
標誌在切換到新的 shell 會話時強制更改目錄:
如何自訂目前 Run0 會話
Run0 的最大賣點是它不使用 setuid (SUID) 來處理超級使用者操作。相反,它依賴 systemd-run,它創建隔離的 psuedo-TTY 以作為 root 運行命令。
這種方法的一個結果是 Systemd 將每個 Run0 shell 視為在服務管理員下執行的離散單元。與傳統的權限提升應用程式不同,這允許您自訂 root shell 進程。
若要為根 shell 新增標籤,請使用該--unit
標誌,後面跟著您要使用的名稱:
您也可以透過新增以下標誌來為根 shell 新增自訂描述--description
:
透過使用以下命令列出根 shell 的自訂名稱來檢查您是否已正確應用您的詳細資訊systemctl
:
預設情況下,Run0 將根 shell 背景的顏色變更為紅色。雖然這是一個有用的視覺指示器,但如果您在系統上使用淺色主題,這可能會分散您的注意力。
若要變更此設置,請使用該--background
標誌,後面接著 40-49 之間的值:
最後,您還可以調整根 shell 的「友善等級」。這是一個介於 -20 和 19 之間的值,決定您的核心是否將您的進程優先於其他進程。
要為您的 root shell 提供最高優先級,請使用--nice
帶有“-20”值的標誌:
如何將 Run0 會話分組在一起
除了能夠自訂每個 Linux 根 shell 之外,您還可以使用 Run0 將它們組合到一個 Systemd 切片中。這是一種特殊的構造,允許您的電腦調整進程的資源需求,而不影響系統的其餘部分。
要在不同的切片上建立根 shell,請執行該--slice
標誌,後面跟著要移動到的切片的名稱:
透過列出其中的進程來確認您的新會話正在新切片下運行:
您也可以使用該--slice-inherit
標誌將新切片與 Run0 來自的切片一起分組。如果您已經將 shell 分組到各自的切片並且只想添加新 shell,則這非常有用:
如何使用 Run0 在 Systemd 容器上執行指令
Systemd-nspawn是一個特殊的程序,可以建立和管理類似Docker的輕量級Linux容器。作為 Systemd 套件的一部分,您也可以使用 Run0 從主機執行 nspawn 容器中的命令。
首先列出系統中可用的 Systemd-nspawn 容器:
執行以下命令在容器的根目錄中建立一個資料夾:
也可以使用 Run0 進入容器的根 shell:
透過列印終端會話的主機名稱來確認您現在正在容器內執行:
當涉及權限提升應用程式時,學習如何使用 Run0 在 Linux 中執行和管理 root 命令只是冰山一角。透過查看 su、sudo 和 sudo -s 之間的差異,深入了解複雜的世界。
圖片來源:Xavier Cee,來自 Unsplash。所有修改和螢幕截圖均由 Ramces Red 進行。
發佈留言