我已经阅读了很多关于为特定用户启用 sudo 访问权限的帖子,但到目前为止这些帖子对我没有帮助。
情况是:
我正在运行 Debian Testing。系统上只有两个帐户:“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
这根本不起作用——当发出“sudo”命令时,它一直说“benny 不在 sudoers 文件中。此事件将被报告。”所以我将 benny 添加到组“sudo”,因为它经常被建议:
usermod -aG sudo benny
以“benny”身份重新登录后,命令
groups
节目
benny cdrom sudo fuse
我觉得这很好。此外
cat /etc/group | grep sudo
节目
sudo:x:27:benny
但是如果我尝试,例如
sudo apt update
它仍然说 Benny 不在 sudoers 文件中。
我确实阅读了很多关于这个问题的文章,每个人都只建议我上面提到的两个步骤之一。
我在这里遗漏了什么?我猜这是一件非常愚蠢的事情,但我没有看到。任何帮助都值得感激!提前致谢!
答案1
我下载了 sudo 的源代码,似乎这种情况可能发生在以下情况下:您的 sudo 配置为使用 LDAP 或 SSSD 方法来确定权限。如果其中任何一个可用,则会在文件方法之前对其进行检查。这可能只在机器是在公司环境中为您设置的,或者在其他地方?在这些情况下,错误消息有点不准确,因为它仍然引用 sudoers“文件”。
我从未使用过其中任何一个,但它们似乎可以在 /etc/sudo.conf 文件中配置,因此您可以查看是否有这样的东西。查看man sudo
它提到了一个 LDAP 插件,并man sudo.conf
提供了有关已配置插件的信息(仅供参考)。
答案2
我遇到了非常相同的问题并通过删除、清除和安装 sudo 来“解决”它。