我从 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
,尽管您肯定会收到一些有关系统帐户的错误消息,例如、lp
、news
、uucp
和list
没有主目录;在大多数情况下,这仅意味着您没有安装相应的子系统/服务,并且是无害的。irc
gnats
答案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
编辑
sudoers
文件:以 root 身份登录后,使用visudo
命令安全地编辑sudoers
文件。此命令sudoers
在默认文本编辑器中打开文件,并在保存时检查语法错误,这一点至关重要,因为错误可能会锁定所有 sudo 访问。将您的用户添加到
sudoers
文件中:在sudoers
文件中,查找如下所示的行:
root ALL=(ALL:ALL) ALL
在此行下方,为您的用户帐户添加一行,如下所示:
yourusername ALL=(ALL:ALL) ALL
将您的用户名替换为您的实际用户名。
保存并退出:将您的用户添加到文件后
sudoers
,保存文件并退出编辑器。如果您使用visudo
默认的 Vim 编辑器,则可以通过键入 :wq 然后按 Enter 键来执行此操作。从 root 注销:添加用户后,从 root 用户注销并尝试通过常规用户帐户使用 sudo。
答案3
运行su
和sudo adduser user_name sudo
将用户以 root 身份添加到 sudo 组中。完成后重新启动/sbin/reboot
。这是在 Virtualbox 的 Debian 12 虚拟机中进行测试的。
答案4
我遇到了同样的问题:在 root 帐户下授予用户 X root 权限后,重新登录到用户 X 并应用 sudo 结果为“不在 sudoers 组中”,尽管可以使用“getent group sudo”看到用户。
然而,人们也可以在 Gnome 设置、用户和组下更改权限。这对我有用。