计算机科学

首页 > 计算机科学

sudo

sudo
Sudo on Ubuntu.png
终端中的sudo命令
开发者 Todd C. Miller
稳定版本
稳定版本
1.8.24
(2018年8月18日,​17天前​(2018-08-18
预览版本
1.8.24rc1
(2018年8月13日,​22天前​(2018-08-13
操作系统 Unix-like
类型 权限授权
许可协议 ISC-style[1]
网站 www.sudo.ws

Sudosubstitute user 或 superuser do),是一种程序,用于类Unix操作系统如BSD,Mac OS X,以及GNU/Linux以允许用户透过安全的方式使用特殊的权限运行程序 (通常为系统的超级用户)。

目录

  • 1 原理
  • 2 语法
    • 2.1 参数
  • 3 参考信息
  • 4 外部链接

原理

在sudo于1980年前后被写出之前[2],一般用户管理系统的方式是利用 su 切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。

sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”)[3];在一般用户需要获取特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟[4],可在/etc/sudoers自定义),使用sudo不需要再次输入密码。

由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理账号,例如Ubuntu、Mac OS X等。

语法

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

sudo -klv

参数

  -b  在后台执行指令。

  -h  显示帮助。

  -H  将HOME环境变量设为新身份的HOME环境变量。

  -k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。

  -l  列出目前用户可执行与无法执行的指令。

  -p  改变询问密码的提示符号。

  -s  执行指定的shell。

  -u  <用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。

  -v  延长密码有效期限5分钟。

  -V  显示版本信息。

  -S  从标准输入流替代终端来获取密码

参考信息

  1. ^ Sudo License
  2. ^ Miller, Todd C. A Brief History of Sudo. [2008-06-20]. (原始内容存档于2007-02-22). 
  3. ^ 在Ubuntu系统中,管理员通过执行visudo/etc/sudoers,给普通用户授予某些sudo的权力
  4. ^ 依各发行版可能有所异同,例如Ubuntu下默认为15分钟。

外部链接

  • 官方网站
  • 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


上一篇:Snort
相关推荐