sudo
開發者 | Todd C. Miller |
---|---|
当前版本 | 1.9.5p2(2021年1月26日 | )
预览版本 | 1.9.4rc1(2020年11月23日 | )
源代码库 | |
操作系统 | 类Unix系统 |
类型 | 權限授權 |
许可协议 | ISC-style[1] |
网站 | www |
Sudo (substitute user [或 superuser] do),是一種程式,用於類Unix作業系統如BSD,Mac OS X,以及GNU/Linux以允許使用者透過安全的方式使用特殊的權限執行程式 (通常為系統的超級使用者)。
原理
在sudo於1980年前後被寫出之前[2],一般使用者管理系統的方式是利用 su
切換為超級使用者。但是使用su的缺點之一在於必須要先告知超級使用者的密碼。
sudo使一般使用者不需要知道超級使用者的密碼即可獲得權限。首先超級使用者將普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登記在特殊的檔案中(通常是/etc/sudoers
),即完成對該使用者的授權(此時該使用者稱為「sudoer」)[3];在一般使用者需要取得特殊權限時,其可在命令前加上「sudo
」,此時sudo將會詢問該使用者自己的密碼(以確認終端機前的是該使用者本人),回答後系統即會將該命令的进程以超級使用者的權限執行。之後的一段時間內(預設為5分鐘[4],可在/etc/sudoers
自訂),使用sudo不需要再次輸入密碼。
由於不需要超級使用者的密碼,部分Unix系統甚至利用sudo使一般使用者取代超級使用者作為管理帳號,例如Ubuntu、macOS等。
语法
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功能。[5][6][7]
參考資訊
- ^ Sudo License. [2009-07-07]. (原始内容存档于2015-07-31).
- ^ Miller, Todd C. A Brief History of Sudo. [2008-06-20]. (原始内容存档于2007-02-22).
- ^ 在Ubuntu系统中,管理员通过执行
visudo
来编辑/etc/sudoers
,给普通用户授予某些sudo的权力 - ^ 依各發行版可能有所異同,例如Ubuntu下預設為15分鐘。
- ^ NVD - CVE-2019-18634. National Vulnerability Database. [2020-01-31]. (原始内容存档于2020-02-06).
- ^ Dan Goodin. Serious flaw that lurked in sudo for 9 years hands over root privileges. Ars Technica. [2020-02-05].
- ^ 林妍溱. Sudo爆可取得根帳號權限的漏洞. iThome. [2020-02-06]. (原始内容存档于2020-02-06).
外部連結
- 官方网站
- How to audit and log user and root shells with sudo via sudosh(页面存档备份,存于互联网档案馆)
- sudo tools(页面存档备份,存于互联网档案馆)
- a logging root shell(页面存档备份,存于互联网档案馆)
- sudo(8) man page from OpenBSD
- sudo(8) man page(页面存档备份,存于互联网档案馆) from linuxmanpages.com
- sudo explained in webcomic form(页面存档备份,存于互联网档案馆) by Xkcd