无需密码即可执行 sudo?

无需密码即可执行 sudo?

受此启发问题....

我是唯一一个使用 12.04 系统的人。
每次我发出sudo命令时,系统都会要求输入用户密码(这本身就很好)。
然而我在想,如果不激活帐户;我如何执行不需要用户密码进行身份验证的 sudo 命令。

注意:我想在不通过密码验证的情况下执行 sudo 命令;仅当它们通过终端执行时。
我不想从其他功能中删除这一额外的安全层,例如在使用“Ubuntu 软件中心”或通过将 something.sh 文件拖放到终端来执行 bash 脚本时。

答案1

您可以配置sudo为永远不询问您的密码。

打开终端窗口并输入:

sudo visudo

在文件底部添加以下行:

$USER ALL=(ALL) NOPASSWD: ALL

$USER您的用户名在系统上的哪个位置。保存并关闭 sudoers 文件(如果您尚未更改默认终端编辑器(您会知道是否更改过),请Ctl + x按退出nano,系统会提示您保存)。

从 Ubuntu 19.04 开始,该文件现在看起来应该类似于

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

YOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL

此后,您可以sudo <whatever you want>在终端窗口中输入内容,而无需输入密码。

这仅适用于sudo在终端中使用命令。如果您(例如)尝试从软件中心安装软件包,系统仍会提示您输入密码

图形化密码提示

答案2

sudo -i如果您不想在修改您的系统(或其他系统)时每 10 分钟就输入一次密码,并且不想修改任何系统文件,那么这就是可行的方法。

sudo当您关闭控制台或输入时,它将使用您的用户密码将您切换为 root用户,exit您将返回到普通用户。

答案3

授予个人(或组)权限的首选方法是添加以下文件/etc/sudoers.d

这将本地更改与默认策略分开,并在分发 sudoers 文件发生变化时节省时间。

要使当前登录的用户成为 sudoer 并且sudo不提示他们输入密码,请使用

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

这将创建一个名为/etc/sudoers.d/$USER(其中$USER是您运行该命令时登录的用户的用户名)的文件,明确哪些用户被授予权限。

如果您想为不同的用户执行此操作,只需将$USER上述命令中的两个实例都替换为其他用户名。

echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser

类似地,可以使用一个文件来管理多个指令:

echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local

请参阅/etc/sudoers.d/READMEman sudoers以了解更多信息。

答案4

超级用户一个很好的答案:

使用 -S 开关从 STDIN 读取密码:

echo <password> | sudo -S <command>

替换<password>为您的密码。

相关内容