为什么“sudo bash”或“sudo -s”命令不要求输入密码?

为什么“sudo bash”或“sudo -s”命令不要求输入密码?

即使我以非管理员用户身份登录,当我输入sudo bash或 时sudo -s,系统也不会要求输入任何密码。在命令历史记录中,我之前没有输入任何密码sudo(即sudo没有缓存任何用户凭据,这可能导致它在此会话中不再要求输入我的密码。)

为什么会出现这种奇怪的行为?如何确保每个sudo命令都su需要相应的密码?如何严格确保任何用户在不输入 root 密码的情况下都无法获得 root 权限?

/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    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
ALL ALL=(ALL) NOPASSWD:ALL

答案1

这是由文件的最后一行引起的/etc/sudoers,其中指出:

ALL ALL=(ALL) NOPASSWD:ALL

...意思是“所有用户都可以以 root 身份执行所有命令,无需任何密码”。

我不知道那条线是怎么进来的,但如果你删除它,你就会恢复正常行为。笔记:用于visudo编辑,以确保其中没有任何语法错误,即执行命令

sudo visudo

并使用弹出的编辑器编辑文件。

相关内容