Sudo

原理

在sudo于1980年前后被写出之前，一般用户管理系统的方式是利用su 切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。
sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息，登记在特殊的文件中（通常是/etc/sudoers），即完成对该用户的授权（此时该用户称为“sudoer”）；在一般用户需要获取特殊权限时，其可在命令前加上“sudo”，此时sudo将会询问该用户自己的密码（以确认终端机前的是该用户本人），回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内（默认为5分钟，可在/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　　从标准输入流替代终端来获取密码