如何在没有密码的情况下运行sudo命令

时间:2020-03-05 15:29:48  来源:igfitidea点击:

了解如何运行某些或者所有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

保存更改。