以其他身份来执行指令。
sudo [-bhHpV][-s ][-u <用户>][指令] 或 sudo [-klv]
sudo可让用户以其他的身份来执行指定的指令,预设的身份为root。在/etc/sudoers中配置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
-b 在后台执行指令。 -h 显示帮助。 -H 将HOME环境变量设为新身份的HOME环境变量。 -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。 -l 列出现在用户可执行和无法执行的指令。 -p 改变询问密码的提示符号。 -s<shell> 执行指定的shell。 -u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以 root 作为新的身份。 -v 延长密码有效期限5分钟。 -V 显示版本信息。
用户 leon 没有执行 sudo 的权利,却执行 sudo 指令:
$ shutdown now shutdown:must be root. $ sudo shutdown now leon is not in the sudoers file. This incident will be reported. #sudo 会以 leon 的帐号,发出一封邮件给管理员,报告此事情。
用户有执行 sudo 的权利,而执行 sudo 指令:
$ sudo shutdown now Password: <——输入leon的密码即可执行shutdown指令
在 /etc/sudoers 这个档案规范了谁可以使用 sudo,如果没有规范,人人都可以用 sudo 的话,那这样就没什么保护的意义了。
/etc/sudoers 这个档案设定的方式,可以看下面这一行:
root ALL=(ALL) ALL
这说明了 root 这个帐号可以使用所有的权限及更改所有的档案,如果你要新增一个使用者也能使用 sudo 的话,可以仿照这一行的写法,详细的说明可以参考 man sudo。而这一行:
%admin ALL=(ALL) ALL
表示所有在admin群组的使用者都可以使用 sudo,因为 Ubuntu 把预设的使用者帐号设在 admin 群组下,所以我们的预设帐号才能使用 sudo。
sudo 的用法很简单,只要在你想执行的指令前面加上 sudo 即可。它会提示要你输入密码,你只要输入你目前使用帐号的密码就可以了。
比方说,你要重新启动一个系统的程式,它们大多被放在 /etc/init.d/ 下面,也需要 root 的权限才能做,所以我们可以透过 sudo 来动作:
$ sudo /etc/init.d/networking restart # 如果打算重新执行网路的设定
如果要更改 /etc/sudoers 这个档,也是需要 root 权限才能对它写入:
$ sudo gedit /etc/sudoers
在图形界面下,执行某些系统设定程式也会要求你输入密码,它的道理跟 sudo 是一样的。