如果把像下面展示的这些行添加到了 /etc/sudoers 文件中,例如 “nemo” 这个用户可以以 root 身份运行 whoami 命令。在现实中,这可能不会造成任何影响,它非常适合作为一个例子。
#Useralias specification
nemo ALL=(root) NOPASSWD: WHOAMI
#Cmndalias specification
Cmnd_Alias WHOAMI =/usr/bin/whoami
注意,我们添加了一个命令别名(Cmnd_Alias),它指定了一个可以运行的命令的全路径,以及一个用户别名,允许这个用户无需密码就可以使用 sudo 执行的单个命令。
当 nemo 运行 sudo whoami 命令的时候,他将会看到这个:
$ sudowhoami
root
注意这个,因为 nemo 使用 sudo 执行了这条命令,whoami 会显示该命令运行时的用户是 root。
至于其他的命令,nemo 将会看到像这样的一些内容:
$ sudodate
[sudo] password for nemo:
Sorry, user nemo isnot allowed to execute '/bin/date'as root on butterfly.
sudo 的默认设置在默认路径中,我们会利用像下面展示的 /etc/sudoers 文件中的几行:
$ sudo egrep "admin|sudo"/etc/sudoers
#Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL <=====
#Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL <=====
在这几行中,%admin 和 %sudo 都说明了任何添加到这些组中的人都可以使用 sudo 命令以 root 的身份运行任何命令。
下面列出的是 /etc/group 中的一行,它意味着每一个在该组中列出的成员,都拥有了 sudo 特权,而无需在 /etc/sudoers 中进行任何修改。
sudo:x:27:shs,nemo
总结sudo 命令意味着你可以根据需要轻松地部署超级用户的访问权限,而且只有在需要的时候才能赋予用户非常有限的特权访问权限。你可能会遇到一些与简单的 sudo command 不同的问题,不过在 sudo 的回应中应该会显示你遇到了什么问题。