如何在没有密码的情况下运行sudo命令
了解如何运行某些或者所有sudo命令,而无需在Ubuntu或者任何其他Linux发行版上输入密码。
大多数Linux发行版,例如Ubuntu,Debian,Fedora,都使用sudo机制来允许管理员用户以root特权运行命令。
当我们使用sudo运行命令时,它会询问帐户密码。
密码的默认超时为15分钟(在Ubuntu Linux中)。
这表示如果十五分钟后使用sudo运行命令,则必须再次输入密码。
某些用户可能会一直觉得输入密码很麻烦。
如果我们是系统上的唯一用户,或者如果我们认为某些命令无需密码就可以运行,则这特别有用。
在Linux中,我们可以更改sudo配置以使用sudo运行某些或者所有命令,但无需输入密码。
如果我们使用的是服务器,则应特别小心,如果已启用SSH。
也许,我们应该先禁用使用密码的SSH访问。
让我们看看如何在没有密码的情况下使用sudo。
但首先,请备份sudoer文件,以防万一:
sudo cp /etc/sudoers ~/sudoers.bak
不使用密码执行所有sudo命令[不推荐]
使用以下命令编辑/etc/sudoers文件:
sudo visudo
这将打开默认的文本编辑器(在Ubuntu中为Nano)来编辑此文件。
我们所要做的就是在此文件中添加如下一行:
user_name ALL=(ALL) NOPASSWD:ALL
当然,我们必须将上述命令中的user_name替换为用户名。
退出shell程序,然后再次输入,我们应该会看到所做的更改。
为什么使用visudo编辑sudoer文件?
现在,我们可以在文本编辑器(如Vim)中手动编辑/etc/sudoers文件,但是不建议这样做。
如果在编辑此文件时发生语法错误,则后果可能是致命的。
这就是为什么我们使用一个名为visudo的专用工具来编辑sudo配置文件的原因。
visudo工具会创建一个新的临时文件,我们可以其中使用默认的文本编辑器编辑sudoer文件。
当我们尝试保存所做的更改时,它将执行检查并通知是否存在语法错误。
>>> /etc/sudoers: syntax error near line 3 <<< What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!)
它为我们提供了一些处理更改的选项。
但是,最好在没有密码的情况下运行所有sudo命令。
值得庆幸的是,还有一个解决方案。
仅运行不带密码的特定sudo命令
我们可以通过以下方式配置sudo:仅运行我们选择的命令,而无需输入密码。
例如,如果我们希望在不输入Ubuntu上sudo密码的情况下运行apt更新和apt升级,这就是我们需要做的。
打开文件进行编辑:
sudo visudo
然后添加这样的一行:
user_name ALL=(ALL) NOPASSWD:/usr/bin/apt update, /usr/bin/apt upgrade
保存更改。