sudo

維基百科,自由的百科全書
跳至導覽 跳至搜尋

sudo
終端中的sudo命令
終端中的sudo命令
開發者Todd C. Miller
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    原始碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      作業系統類Unix系統
      類型權限授權
      許可協定ISC-style[1]
      網站www.sudo.ws

      sudosubstitute user [或 superuser] do),是一種電腦程式,用於類Unix作業系統BSDMac OS X/macOS以及GNU/Linux,該電腦程式可以讓使用者以安全的方式使用特定的權限執行程式(通常為作業系統超級使用者)。

      原理[編輯]

      在sudo於1980年前後被寫出之前[2],一般使用者利用 su 切換使用者,管理系統時通常使用此命令切換為超級使用者。但是使用su的缺點之一在於必須要先告知目標使用者的密碼。

      sudo使一般使用者不需要知道目標使用者的密碼即可獲得權限。首先由超級使用者將普通使用者的名字、可以執行的特定命令、按照哪種使用者或使用者群組的身分執行等資訊,登記在特殊的檔案中(通常是/etc/sudoers),即完成對該使用者的授權(此時該使用者稱為「sudoer」)[3];在一般使用者需要取得特定權限時,其可在命令前加上「sudo」,此時sudo將會詢問該使用者自己的密碼(以確認終端機前的是該使用者本人),回答後系統即會將該命令的行程以目標使用者的權限執行。如果沒有指定目標使用者,就預設以超級使用者的權限執行。之後的一段時間內(預設為5分鐘[4],可在/etc/sudoers自訂),使用sudo不需要再次輸入密碼。

      由於不需要目標使用者的密碼,部分Unix系統甚至利用sudo使一般使用者取代超級使用者作為管理帳號,例如UbuntumacOS等。但也有一些Unix系統對sudo做了限制,如FreeBSD需手動安裝sudo,然後必須手動組態/etc/sudoers(安裝在/usr/bin/sudo),或/usr/local/etc/sudoers(安裝在/usr/loacl/bin/sudo[5]

      語法[編輯]

      sudo [-bhHpV][-s ][-u <用户>][指令]

      sudo [-klv]

      參數[編輯]

        -b  在後台執行指令。

        -h  顯示說明。

        -H  將HOME環境變數設為新身分的HOME環境變數。

        -k  結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼。

        -l  列出目前使用者可執行與無法執行的指令。

        -p  改變詢問密碼的提示符號。

        -s  執行指定的shell。

        -u  <使用者>  以指定的使用者作為新的身分。若不加上此參數,則預設以root作為新的身分。

        -v  延長密碼有效期限5分鐘。

        -V  顯示版本資訊。

        -S  從標準輸入流替代終端來取得密碼

      安全漏洞[編輯]

      2020年1月,CVE-2019-18634公布一個已存在9年以上的漏洞,指出在pwfeedback的功能選項中。此功能讓系統可以星號字元表示目前輸入的字元,但在sudoer檔案開啟pwfeedback功能後,可能讓使用者觸發堆疊式緩衝溢位攻擊,讓沒有系統管理權限的使用者、甚至連非列於sudoer檔案中的使用者得以提升到root帳號權限。Sudo 1.7.1到1.8.25p1都受本漏洞影響,不過前提是系統管理員需開啟pwfeedback功能。[6][7][8]

      參見[編輯]

      參考資訊[編輯]

      1. ^ Sudo License. [2009-07-07]. (原始內容存檔於2015-07-31). 
      2. ^ Miller, Todd C. A Brief History of Sudo. [2008-06-20]. (原始內容存檔於2007-02-22). 
      3. ^ 以Ubuntu系統為例,管理員通過執行visudo來編輯/etc/sudoers,給普通使用者授予某些sudo的權力
      4. ^ 依各發行版可能有所異同,例如Ubuntu下預設為15分鐘。
      5. ^ 存档副本. [2022-10-19]. (原始內容存檔於2022-10-19). 
      6. ^ NVD - CVE-2019-18634. National Vulnerability Database. [2020-01-31]. (原始內容存檔於2020-02-06). 
      7. ^ Dan Goodin. Serious flaw that lurked in sudo for 9 years hands over root privileges. Ars Technica. [2020-02-05]. (原始內容存檔於2022-05-07). 
      8. ^ 林妍溱. Sudo爆可取得根帳號權限的漏洞. iThome. [2020-02-06]. (原始內容存檔於2020-02-06). 

      外部連結[編輯]