“用户不在 sudoers 文件中”,但实际上是

Ben*_*och 7 linux debian sudo sudoers


我已经阅读了很多关于为特定用户启用 sudo 访问的帖子,但到目前为止这些都无济于事。
情况是:
我正在运行 Debian 测试。系统上只有两个帐户:“root”和用户帐户“benny”。用户“benny”应该能够使用 sudo 以 root 权限运行命令(当然我先安装了 sudo),这就是我使用 visudo 编辑“/etc/sudoers”文件的原因,如下所示:

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
benny   ALL=(ALL:ALL) ALL #<<<<<<<<<<<<<<< EDIT HERE!

# 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= NOPASSWD: /usr/sbin/g15daemon
Run Code Online (Sandbox Code Playgroud)

这根本不起作用 - 发出“sudo”命令时,它一直说“benny 不在 sudoers 文件中”。将报告此事件。所以我将 benny 添加到“sudo”组中,正如人们经常建议的那样:

usermod -aG sudo benny
Run Code Online (Sandbox Code Playgroud)

以“benny”身份重新登录后,命令

groups
Run Code Online (Sandbox Code Playgroud)

显示

benny cdrom sudo fuse
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很好。还

 cat /etc/group | grep sudo 
Run Code Online (Sandbox Code Playgroud)

显示

 sudo:x:27:benny
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试,例如

sudo apt update
Run Code Online (Sandbox Code Playgroud)

它仍然一直说 benny 不在 sudoers 文件中。
我真的阅读了很多关于这个问题的文章,每个人都只是建议我上面提到的两个步骤之一。
我在这里缺少什么?我想这真的很愚蠢,但我没有看到。任何帮助表示赞赏!提前致谢!

小智 2

我下载了 sudo 的源代码,看来发生这种情况的方式是如果您的 sudo 配置为使用 LDAP 或 SSSD 方法来确定权限。如果其中任何一个可用,它将在文件方法之前进行检查。这可能只有当这台机器是在公司环境或其他环境中为您设置时才有意义?在这些情况下,错误消息有点不准确,因为它仍然引用 sudoers“文件”。

我从来没有使用过其中任何一个,但看起来它们会在 /etc/sudo.conf 文件中配置,所以你可以看看你是否有这样的东西。查看man sudo它提到了一个 LDAP 插件,并man sudo.conf提供了有关配置 FWIW 插件的信息。