如何在没有密码的情况下运行Sudo命令
“ sudo”命令允许受信任的用户以另一个用户(默认情况下为root用户)的身份运行程序。
如果我们在命令行上花费大量时间,则“ sudo”是我们将经常使用的命令之一。
通常,要向用户授予sudo访问权限,我们需要将该用户添加到sudoers文件中定义的sudo组中。
在Debian,Ubuntu及其衍生产品上,“ sudo”组的成员被授予sudo特权,而在基于RedHat的发行版(如CentOS和Fedora)上,sudo组的名称为“ wheel”。
在运行sudo命令之前,将提示该组的每个成员输入密码。
这增加了一层另外的安全性,并且是向用户授予sudo特权的首选方法。
但是,在某些情况下,例如运行自动脚本,我们可能需要配置sudoers文件,并允许某些用户在不要求输入密码的情况下运行“ sudo”命令。
将用户添加到Sudoers文件
sudoers文件包含确定用户和组的sudo特权的信息。
我们可以通过修改sudoers文件或者将配置文件添加到“ /etc/sudoers.d”目录来配置用户sudo访问。
在此目录内创建的文件将包含在sudoers文件中。
进行任何更改之前,最好备份当前文件:
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
向下滚动到文件末尾,并添加以下行,这将允许用户“ theitroad”使用“ sudo”运行任何命令而无需输入密码:
/etc/sudoers
theitroad ALL=(ALL) NOPASSWD:ALL
不要忘记使用我们要授予访问权限的用户名更改“ theitroad”。
如果要允许用户仅运行特定命令而不输入密码,请在“ NOPASSWD”关键字之后指定命令。
例如,要仅允许“ mkdir”和“ mv”命令,可以使用:
/etc/sudoers
theitroad ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/mv
完成后,保存文件并退出编辑器。
使用'/etc/sudoers.d'
无需编辑sudoers文件,我们可以使用'/etc/sudoers.d'目录中的授权规则创建一个新文件。
这种方法使sudo特权的管理更加可维护。
打开文本编辑器并创建文件:
sudo nano /etc/sudoers.d/theitroad
我们可以根据需要命名文件,但是通常最好使用用户名作为文件名。
/etc/sudoers.d/theitroad
添加与添加到sudoers文件中相同的规则:
theitroad ALL=(ALL) NOPASSWD:ALL
最后,保存文件并关闭编辑器。