即使我以非管理员用户身份登录,当我输入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
并使用弹出的编辑器编辑文件。