sudo命令允许受信任的用户以其他用户运行命令与程序。默认是root用户。

通常要向用户授予sudo权限,您应该将用户添加到/etc/sudoers文件定义的sudo组中。这是向用户授予sudo权限的首选方法。

在Debian,Ubuntu及其衍生的发行版,sudo组的成员被授予sudo的访问权限,而在基于RedHat的发行版,如CentOS和Fedora,wheel组的成员具有sudo的访问权限。

在运行sudo命令之前,将提示组的成员输入密码。这增加了一层额外的安全性,但是,在某些情况下,例如运行自动化脚本。

您可能需要配置sudoers文件并允许某些用户在不需要输入密码的情况下运行sudo命令。在本教程中,我们将说明如何不输入密码运行sudo命令。

无密码运行sudo

/etc/sudoers文件中定义了用户和组的sudo权限的策略。此文件使您可以授予命令的自定义访问权限并设置自定义安全策略。

myfreax  ALL=(ALL) NOPASSWD:ALL规则将允许用户在运行sudo命令时,不需要输入密码即可运行。这在编写脚本时特别有用。

假设您要允许用户不输入密码运行sudo命令。请运行命令sudo visudo打开文件/etc/sudoers

追加此规则到/etc/sudoers文件的末尾。保存文件,然后退出编辑器。不要忘记用将myfreax改为你使用的用户名。

sudo visudo
myfreax  ALL=(ALL) NOPASSWD:ALL
/etc/sudoers

除了编辑sudoers文件外,还可以在/etc/sudoers.d目录创建文件并添加授权规则来实现相同目的。

如果在/etc/sudoers.d目录中创建新的配置文件,必须在/etc/sudoers文件使用includedir /etc/sudoers.d指令包含/etc/sudoers.d目录文件。

includedir指令默认是没有启用的,如需要启用,去掉注释即可。

这种方法使得对sudo权限管理更加可维护。文件名并不重要,但通常的做法是根据用户名命名文件。

仅允许运行指定的命令

另一个典型示例是仅允许用户使用sudo运行指定的命令。例如,要仅允许用户使用sudo运行mkdir命令创建目录rmdir命令删除目录

myfreax ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir规则将允许用户在不输入密码,仅运行指定rmdir和mkdir命令。

sudo visudo
myfreax ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir
/etc/sudoers

结论

教程中已经向您展示了如何编辑/etc/sudoers以使您sudo无需输入密码即可运行命令。当您具有非root用户需要执行管理任务的脚本时,此功能很有用。如有任何疑问,请随时发表评论。