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
除了编辑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
以使您sudo
无需输入密码即可运行命令。当您具有非root用户需要执行管理任务的脚本时,此功能很有用。如有任何疑问,请随时发表评论。