sudo su 即使更改密码后也不询问密码

kad*_*amb 2 security sudo passwords ubuntu

我在 AWS 上有一个 ubuntu 实例。
获得 ssh 登录后,我可以使用sudo su命令更改为 root 密码。
出于安全原因,我想更改 root 密码。所以我尝试了以下方法:

root@email:/home/ubuntu# sudo passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@email:/home/ubuntu# 
Run Code Online (Sandbox Code Playgroud)

当我尝试更改密码后sudo su,它不会要求输入密码

ubuntu@email:~$ sudo su
root@email:/home/ubuntu# 
Run Code Online (Sandbox Code Playgroud)

而当我尝试 only 时su,它会提示输入:

ubuntu@email:~$ su
Password: 
Run Code Online (Sandbox Code Playgroud)

如何实现安全或设置密码sudo su

以下是sudoers(visudo)的详细信息

#
# 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
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 6

sudoers文件中的这一行

#includedir /etc/sudoers.d
Run Code Online (Sandbox Code Playgroud)

使其包含/etc/sudoers.d/目录中的其他文件。该行似乎已被注释掉,但事实并非如此;该指令#includedir与领先#。这些包含的文件之一可能设置了NOPASSWD导致问题的规则。

在更改某些内容之前,请确保您的普通用户拥有有效的非空密码。从这个答案

sudo 即使您没有密码,也会要求输入密码,并且不会接受空密码。

如有疑问,请passwd为您的普通用户调用并设置一个全新的密码。

此命令应该告诉您需要检查哪些文件:

sudo grep -r NOPASSWD /etc/sudoers.d/
Run Code Online (Sandbox Code Playgroud)

您寻找的行可能如下所示:

ubuntu ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)

注释掉(# ubuntu ALL=...)。比较这个答案