受此启发问题....
我是唯一一个使用 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/README
和man sudoers
以了解更多信息。