Ubuntu 16.04 上 Sudo 不要求输入密码

Ubuntu 16.04 上 Sudo 不要求输入密码

自从我更新到 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

相关内容