它总是说我不在“sudoers”文件中!

它总是说我不在“sudoers”文件中!

我从 Ubuntu-20 迁移到 Debian-12,并且无法在新安装的系统中sudo使用我的用户名执行命令。my_name

因此,我在 root 登录终端中添加了my_name“sudo”组( ),然后重新启动了我的计算机。usermod -aG sudo my_name

但它不起作用,我仍然收到类似“my_name 不在 sudoers 文件中...”的消息。

我发现了一件奇怪的事情,即当我groups在以 my_name 身份登录的终端窗口中发出命令时,“sudo”组名称会出现不是存在于组列表中。但是当我groups my_name以root权限执行时,“sudo”组名确实存在在群组列表中!

这是 Debian-12 的错误吗?或者我错过了一些动作?

答案1

/etc/group和/或文件是否/etc/gshadow已手动编辑(在usermod/groupmod和类似工具之外)?

可能存在小到足以被忽略的语法错误,groups yourusername但设置会话的 PAM 库可能更严格。

以 root身份运行grpck以检查组文件的语法。

您可能也想运行pwck,尽管您肯定会收到一些有关系统帐户的错误消息,例如、lpnewsuucplist没有主目录;在大多数情况下,这仅意味着您没有安装相应的子系统/服务,并且是无害的。ircgnats

答案2

1.以root身份登录:您需要登录root帐户才能对文件进行更改sudoers。如果您有 root 密码,则可以通过su在终端中键入,然后输入 root 密码来切换到 root 用户。

1.1 查找visudo/usr/sbin.

1.2 添加/usr/sbin到您的 PATH:您可以/usr/sbin像这样临时添加到您的 PATH:

export PATH=$PATH:/usr/sbin

1.3visudo以完整路径运行:

/usr/sbin/visudo
  1. 编辑sudoers文件:以 root 身份登录后,使用visudo命令安全地编辑sudoers文件。此命令sudoers在默认文本编辑器中打开文件,并在保存时检查语法错误,这一点至关重要,因为错误可能会锁定所有 sudo 访问。

  2. 将您的用户添加到sudoers文件中:在sudoers文件中,查找如下所示的行:

root    ALL=(ALL:ALL) ALL

在此行下方,为您的用户帐户添加一行,如下所示:

yourusername    ALL=(ALL:ALL) ALL

将您的用户名替换为您的实际用户名。

  1. 保存并退出:将您的用户添加到文件后sudoers,保存文件并退出编辑器。如果您使用visudo默认的 Vim 编辑器,则可以通过键入 :wq 然后按 Enter 键来执行此操作。

  2. 从 root 注销:添加用户后,从 root 用户注销并尝试通过常规用户帐户使用 sudo。

答案3

运行susudo adduser user_name sudo将用户以 root 身份添加到 sudo 组中。完成后重新启动/sbin/reboot。这是在 Virtualbox 的 Debian 12 虚拟机中进行测试的。

答案4

我遇到了同样的问题:在 root 帐户下授予用户 X root 权限后,重新登录到用户 X 并应用 sudo 结果为“不在 sudoers 组中”,尽管可以使用“getent group sudo”看到用户。

然而,人们也可以在 Gnome 设置、用户和组下更改权限。这对我有用。

相关内容