共用方式為


Sudo for Windows

Sudo for Windows 是使用者直接從 Windows 上未提升權限的主控台工作階段執行提升權限的命令 (以管理員身分) 的新方法。

閱讀公告,其中包含示範影片,並深入探討 Sudo for Windows 的運作方式。

必要條件

適用於 Windows 的 Sudo 命令適用於 Windows 11 版本 24H2 或更高版本。 (檢查 Windows 更新)。

注意

Sudo for Windows 尚未可用於 Windows 10,但將來可能會可用。

如何啟用 Sudo for Windows

若要啟用 Windows 的 Sudo,請開啟Settings > For Developers並將 [啟用 sudo] 設定[開啟]

啟用 Sudo

警告

在某些設定中啟用時,Sudo for Windows 可以用做潛在的權限向量升級。 在電腦上啟用 sudo 命令時,您應該確保了解安全性注意事項

如何設定 Sudo for Windows

Sudo for Windows 目前支援三種不同的設定選項。 您可以使用命令列,從 Settings > For Developers 功能表或以程式設計方式進行設定。 設定選項包括:

  • 在新視窗中 (forceNewWindow):forceNewWindow設定選項是 Sudo for Windows 的預設設定選項。 在此設定中使用 sudo 可在新視窗中執行命令。 這類似於 runas /user:admin 命令的行為。

  • 輸入已關閉 (disableInput):disableInput 設定選項會在目前視窗中執行提升權限的程序,但輸入控制代碼已關閉。 這表示提升權限的程序將無法從目前的主控台視窗接收輸入。 這對於您想要以管理員身分執行命令,但又不想允許該命令接收來自目前主控台視窗的輸入的情況非常有用。 此設定選項提供了 inline 設定選項的一些便利性,同時減輕了一些相關的安全性風險

  • 內嵌 (normal):normal 設定選項與 sudo 在其他作業系統上的行為最相似。 此設定會在目前視窗中執行提升權限的程序,而且程序將能夠接收來自目前主控台工作階段的輸入。 這對於您想要以管理員身分執行命令,並希望允許該命令從目前主控台視窗接收輸入的情況非常有用。 此設定選項提供了最大的便利,但僅當您熟悉相關的安全性風險時才應選擇此選項。

您可以從 Settings > For Developers 功能表中選取這些設定,或在提升權限的命令列 (管理主控台) 中以程式設計方式變更設定,使用:

  • sudo config --enable <configuration_option>

更新 <configuration_option>forceNewWindowdisableInputnormal

如何使用 Sudo for Windows

若要使用 Sudo for Windows,只需將 sudo 新增到您要以管理員身分執行的命令前面即可。 例如,若要以管理員身分執行 netstat -ab,您需要在主控台視窗中執行 sudo netstat -ab

因為 sudo 會提升以系統管理員層級權限執行的標的程序,因此系統會開啟提示,要求您確認是否要繼續。

安全性考量

輸入關閉 (inputClosed) 或內嵌 (normal) 設定中執行 sudo 有相關風險。 惡意程序可能會嘗試使用未提升權限的 sudo.exe 和提升權限的 sudo.exe 程序建立的連線,來驅動提升權限的程序。

inputClosed 設定選項會透過關閉輸入程式代碼來降低風險。 中斷輸入程式代碼與目前主控台視窗的連線,意味著未提升權限的程序無法將輸入傳送到提升權限的程序。

inline 設定選項在目前視窗中執行提升權限的程序,且該程序能夠從目前主控台工作階段接收輸入。 未提升權限的程序可以在同一主控台視窗中將輸入傳送到提升權限的程序,或從此設定中的目前視窗中的輸出取得資訊。

常見問題集

Sudo for Windows 與現有 runas 命令有何不同?

sudo 命令提供了一種從目前未提升權限的命令列內容中,以管理員身分快速提升命令權限的方法,並且對於來自其他作業系統的一些使用者來說很熟悉。 runas 命令提供了一種以任何使用者身分執行程式的方法,包括管理員 (如果您選擇的話)。 此時,Windows 上的 sudo 命令不支援以其他使用者身分執行程式。 sudorunas 之間的其他主要差異包括:

  • runas 可讓您以其他使用者身分執行程式,包括但不限於系統管理員。 這項功能位於 sudo 命令的藍圖中,但尚不存在。

  • sudo 可讓您快速提升程式的權限 (以系統管理員身分):

    • 您可以選擇在新視窗中執行此動作,這類似於 runas 系統管理員流程。
    • 您可以選擇使用 disableInputnormal 設定選項將提升權限的程序連接到目前主控台視窗。 runas 不支援此功能。
  • runas 可以在命令列中提示使用者輸入密碼。

  • sudo 只能透過使用者帳戶控制 (UAC) 安全性功能進行提升權限,該功能旨在使用驗證提示保護作業系統免受未經授權的變更。

您應該考慮您的特定使用案例,並計劃使用最符合您需求的命令。 您也應該考慮在 inputClosednormal 模式下執行 sudo 的安全性隱患。 建議使用預設的 forceNewWindow 設定選項,除非您熟悉並可接受與其他 sudo 設定相關的風險。

Sudo for Windows 開放原始碼存放庫

Sudo for Windows 是開放原始碼,歡迎您的貢獻和意見反應。 您可以在 GitHub 上找到 Sudo for Windows 的原始碼。

其他功能

如果您要尋找 Sudo for Windows 未提供的其他功能,請參閱 的 gsudoGerardo Grignoli,其中包含一些額外的功能和設定選項,或查看來自社群的其他解決方案。