自从我更新到 16.04 以来,我注意到每当我使用任何 sudo 命令时,终端在执行命令之前都不会询问我密码,而是直接执行命令。我是管理员,我没有其他用户帐户。
我见过sudo 不要求输入密码并且我的 /etc/sudoers 与答案中给出的完全一样,但是在使用 sudo 命令时,终端仍然不会提示输入密码,而是执行命令。
我想详细了解如何/etc/sudoers
修改
让任何特定的用户帐户(包括管理员)在使用 sudo 命令时提示或不提示输入密码。
如何排除任何特定命令,以便在对任何用户帐户(包括管理员)使用 sudo 时不提示密码。
这是我的 sudoers 文件
# /etc/sudoers
#
# 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,timestamp_timeout=0
# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification root ALL=(ALL) ALL
# Members of the admin group may gain root privileges %admin ALL=(ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
sudo -l 的输出
Matching Defaults entries for bharat on ratcoder:
env_reset, timestamp_timeout=0
User bharat may run the following commands on ratcoder:
(ALL) NOPASSWD: ALL
答案1
您NOPASSWD
在 中的某个文件中将一条规则应用于您的用户/etc/sudoers.d
。使用sudo grep NOPASSWD /etc/sudoers.d -R
来找出是哪一个。
但是,您的/etc/sudoers
不是默认的。sudoers
可以通过查看sudo
包来获取默认值:
$ apt-get download sudo
Get:1 http://mirror.cse.iitk.ac.in/ubuntu xenial-updates/main amd64 sudo amd64 1.8.16-0ubuntu1.1 [389 kB]
Fetched 389 kB in 0s (4,750 kB/s)
$ dpkg-deb --fsys-tarfile sudo*.deb | tar x ./etc/sudoers
$ cat etc/sudoers
#
# 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"
# 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
这和您现有的有很大不同。恢复/etc/sudoers
为默认设置。
要排除需要密码的特定命令,请参阅如何在没有密码的情况下运行特定的 sudo 命令?
答案2
编辑您的sudoers文件使用sudo visudo
。
找到此行:Defaults env_reset
并将其更改为:
Defaults env_reset,timestamp_timeout=0
这会强制 sudo 每次运行时都要求输入密码。
答案3
OP 没有提到哪个用户是管理员用户。很可能它是一个创建的用户帐户(因此这可能不适用),但对于遇到此线程的其他人,我提到了这一点:在 AWS 上使用当前的 Ubuntu 16.04 AMI 时,ubuntu
默认情况下用户不需要密码,因此sudo
可以cloud-init
使用它来执行。此访问在中定义/etc/sudoers.d/90-cloud-init-users
,如下所示:
# User rules for ubuntu
ubuntu ALL=(ALL) NOPASSWD:ALL