Linux: 'Username' 不在 sudoers 文件中。此事件将被报告。

147
在登录到Linux机器的ssh后,我收到了这条消息:
“'用户名'不在sudoers文件中。此事件将被报告。”
我该如何解决这个问题?我正在通过ssh连接我的虚拟私有服务器。
我需要具备sudoers权限。

2
你的用户是否拥有管理员访问权限?如果没有,则使用 root 登录并将您的用户添加到“/etc/sudoers”文件中。 - smn_onrocks
2
https://unix.stackexchange.com/questions/179954/username-is-not-in-the-sudoers-file-this-incident-will-be-reported - Stephen C
1
https://askubuntu.com/questions/2214/how-do-i-add-a-user-to-the-sudo-group 和 https://superuser.com/questions/866582/username-is-not-in-the-sudoers-file-this-incident-will-be-reported - Stephen C
11个回答

209

打开文件

su root 
nano /etc/sudoers
然后像下面的语法一样在管理员用户下方添加用户。
user_name ALL=(ALL)  ALL

14
建议使用visudo来避免同时编辑(在这种情况下可能不是问题,但仍然建议如此…) - eMMe
6
这个文件顶部的注释很明确:“## 必须使用root用户使用'visudo'命令编辑此文件。” - David C. Rankin
117
这有什么道理呢?问题在于用户无法使用sudo,那么解决方案的一部分如何使用sudo呢? - Peter Uithoven
1
在一个视频中发现了以下内容。对我有效。鉴于此,我们需要处于根模式。为此,请使用ssh root@localhost,然后sudo nano /etc/sudoers。 - Kathiravan Natarajan
3
我相信很多人会点赞这个答案,因为他们只需要从这个答案中复制粘贴最后一个命令。 - MaXi32
显示剩余6条评论

77

以上两个答案在一定程度上是正确的,但在基于Debian系统(Ubuntu,Kubuntu,Debian等)中将您的用户添加到sudo组中更容易,在基于RedHat系统(RedHat,Fedora,CentOS等)中将其添加到wheel组中更容易。

usermod -a -G sudo user
or
usermod -a -G wheel user 

2
没错。在第二组中包括OpenSuse。在我的情况下,我颠倒了顺序,在将我的用户添加到“wheel”之前修改了sudoers,最终到达了这里。 - Tom Russell
2
这种方式要好得多,因为您不需要编辑任何关键文件来执行此操作。 - RSiqueira
4
在我的Ubuntu 22.04上没有工作,但在Contabo上可以。 - Mahesh Ghamaand
4
@Mahesh 用户的进程树可能需要重新启动。 - konsolebox
5
它会触发“权限被拒绝”的问题。 - Tek Kshetri
显示剩余3条评论

39

对于初学者来说,这是一个非常常见的错误。该错误发生的原因是我们试图从用户而不是root用户访问/更新具有超级权限的东西。

因此,要解决这个问题,我们需要在sudoers文件中进行更改,其中已经给出了root用户的权限。所以,切换到root用户,运行以下命令:

sudo su 
# vi /etc/sudoers

编辑器将打开文件,现在向下滚动到底部,您将看到一行代码

#User privilege specification

root     ALL=(ALL:ALL) ALL

username ALL=(ALL:ALL) ALL

正如您所看到的,我刚刚添加了我的用户名并赋予了所有权限。

保存文件并退出。切换回用户并轻松使用sudo命令。


2
这是解决方案,除此之外我还需要“su root”。 - Tom
2
感谢您指出这一点。我虽然假定了它,但已将其添加到解决方案中。 - Sonal
1
这应该是被接受的答案。请注意,它假设用户知道如何在VI编辑器中操作文本。 - crjacinro

11

在上述的/etc/sudoers文件的顶部有一些信息:

"## This file MUST be edited with the 'visudo' command as root."

按照我们受到的指示,使用以下操作:
$ su
> Enter root password: *******
$ visudo -f /etc/sudoers

找到/etc/sudoers文件中的以下部分,并为您的用户添加权限:

# User privilege specification
root    ALL=(ALL:ALL) ALL
user_name ALL=(ALL) ALL

保存文件(如果vim是您的默认文本编辑器,请按esc,然后键入:x;如果是nano,请按ctrl+oenter,然后按ctrl+x)。

键入exit关闭root shell,并享受使用您的username访问sudo的权限。


7

我的主机语法与Rodney的略有不同

usermod -aG wheel username

他们的解释如下:

用户需要被添加到wheel组中。

使用usermod命令将用户添加到wheel组中。

这样做后,您可能需要注销并重新登录。

2
我只需要在应用此解决方案后注销并重新登录即可。 - user12603016
2
如果我的用户已经属于wheel组,但我仍然收到“'Username'不在sudoers文件中。此事件将被报告。”的错误信息,该怎么办? - Adrian Lopez
@AdrianLopez,wheel语法只有在wheel是sudoers组时才有意义,而在您的情况下可能不是。说实话,这个答案也不是很有帮助,反而会误导人。默认情况下,wheel不在sudoers文件中。 - Patrick Abraham

7

您应该使用visudo编辑/ etc / sudoers文件。

只需运行 sudo visudo -f /etc/sudoers

并添加您的用户名,以正确的语法和访问权限。 您可以在man sudoers中找到更多信息。


6
  1. 使用命令$ su root进入Root账户。输入Root密码。

  2. 安装sudo:$ apt-get install sudo -y

  3. 将您的<用户名>添加到sudo组:$ adduser <username> sudo

  4. $ exit

  5. 然后登录您的<用户名>会话

  6. 最后,使用以下命令检查:< username>@< hostname>:~$ sudo apt-get update


4
su root基本上是我需要的答案。 - Hicsy

6

如果你的系统找不到visudo命令

whereis visudo

启动此工具

./PATH/visudo

User privilege specification

下面添加这行。
user_name ALL=(ALL)  ALL

保存更改,完成!


4

试试这个视频,它对我有用。

  1. ssh root@localhost
  2. sudo vi /etc/sudoers
  3. 在文件'sudoers'中插入用户名
  4. 保存并退出ssh

4

首先,切换/登录到root用户账户或具有sudo权限的账户。

接下来将用户添加到sudo用户组:

  • If you're on Ubuntu members of the sudo group are granted with sudo privileges, so you can use this:

    sudo adduser username sudo
    
  • If you're on CentOS members of the wheel group are granted with sudo privileges, so you can use this::

    usermod -aG wheel username
    

注意:将username替换为您所需的用户名。

为测试sudo访问权限,登录刚刚添加到sudo用户组中的帐户,然后使用sudo运行以下命令:

sudo whoami

您将被提示输入密码。如果用户具有sudo访问权限,则输出如下:

root

如果出现“用户不在sudoers文件中”的错误,这意味着该用户尚未拥有sudo权限。
就是这样。
希望这可以帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接