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). 

      外部链接[编辑]