sudo

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

sudo
终端中的sudo命令
终端中的sudo命令
開發者Todd C. Miller
当前版本
  • 1.9.15 (2023年11月6日;穩定版本)[1]
  • 1.9.15p5 (2023年12月30日;穩定版本)[2]
源代码库
操作系统类Unix系统
类型權限授權
许可协议ISC-style[3]
网站www.sudo.ws

原理

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

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

由於不需要目标使用者的密碼,部分Unix系統甚至利用sudo使一般使用者取代超級使用者作為管理帳號,例如UbuntumacOS等。但也有一些Unix系统对sudo做了限制,如FreeBSD需手动安装sudo,然后必须手动配置/etc/sudoers(安装在/usr/bin/sudo),或/usr/local/etc/sudoers(安装在/usr/loacl/bin/sudo[7]

语法

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功能。[8][9][10]

参见

參考資訊

  1. . 2023年11月6日 [2023年11月10日].
  2. . 2023年12月30日 [2024年1月28日].
  3. . [2009-07-07]. (原始内容存档于2015-07-31).
  4. Miller, Todd C. . [2008-06-20]. (原始内容存档于2007-02-22).
  5. 以Ubuntu系统为例,管理员通过执行visudo来编辑/etc/sudoers,给普通用户授予某些sudo的权力
  6. 依各發行版可能有所異同,例如Ubuntu下預設為15分鐘。
  7. . [2022-10-19]. (原始内容存档于2022-10-19).
  8. . National Vulnerability Database. [2020-01-31]. (原始内容存档于2020-02-06).
  9. Dan Goodin. . Ars Technica. [2020-02-05]. (原始内容存档于2022-05-07).
  10. 林妍溱. . iThome. [2020-02-06]. (原始内容存档于2020-02-06).

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.