sudo命令允许受信任的用户作为另一个用户运行程序,默认情况下是root用户。如果您在命令行上花费了大量时间,那么sudo将会是您一直使用的命令之一。
通常,要授予sudo访问权限,请将用户添加到sudoers文件中定义的sudo组。在Debian,Ubuntu及其衍生产品上,sudo组的成员在基于RedHat的发行版(如CentOS和Fedora)上获得sudo权限,sudo组的名称是wheel。
在运行sudo命令之前,系统将提示该组的每个成员输入密码。这增加了额外的安全层,是向用户授予sudo权限的首选方式。
如下图:
但是,在某些情况下,例如运行自动脚本,您可能需要配置sudoers文件并允许某些用户运行sudo命令而不要求输入密码。
将用户添加到Sudoers文件
sudoers文件包含确定用户和组的sudo权限的信息。
您可以通过修改sudoers文件或将配置文件添加到/etc/sudoers.d目录来配置用户sudo访问权限。此目录中的所有文件都包含在sudoers文件中。
在进行任何更改之前,最好备份当前文件:
linuxidc@linuxidc:~/www.linuxidc.com$ sudo cp /etc/sudoers{,.backup_$(date +%Y%m%d)}
date命令会将当前日期附加到备份文件名。
使用visudo命令打开/etc/sudoers文件:
sudo visudo
更改sudoers文件时始终使用visudo此命令检查后编辑,如果存在语法错误,则不会保存更改。 如果使用文本编辑器打开文件,语法错误将导致丢失sudo访问权限。
在大多数系统上,visudo命令使用vim文本编辑器打开/etc/sudoers文件。 如果您没有使用vim的经验,可以使用其他文本编辑器。 例如,要将编辑器更改为GNU nano,您将运行:
sudo EDITOR=nano visudo
向下滚动到文件的末尾并添加以下行,该行允许用户“linuxidc”使用sudo运行任何命令而无需开始询问密码:
/etc/sudoers
linuxidc ALL=(ALL) NOPASSWD:ALL
如下图:
不要忘记使用您要授予访问权限的用户名更改“linuxidc”。
如果要允许用户仅运行特定命令而不输入密码,请在NOPASSWD关键字后指定命令。
例如,要仅允许使用mkdir和mv命令:
在/etc/sudoers文件
linuxidc ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/mv
完成后,保存文件并退出编辑器。
使用/etc/sudoers.d
您可以使用授权规则将新文件添加到/etc/sudoers.d目录,而不是编辑sudoers文件。 这种方法将使sudo权限的管理更加可维护。
打开文本编辑器并创建文件:
sudo nano /etc/sudoers.d/linuxidc
您可以根据需要命名文件,但通常最好使用用户名作为文件名。
/etc/sudoers.d/linuxidc
添加与添加到sudoers文件中相同的规则:
linuxidc ALL=(ALL) NOPASSWD:ALL
最后,保存文件并关闭编辑器。
总结
当您拥有非root用户需要执行管理任务的脚本时,运行不带密码的sudo非常有用。
如有任何疑问,请随时发表您的看法。