这篇文章解释了如何“修复” sudo 无法在 Linux 上运行,导致尝试使用时出现此消息:“您的用户名不在 sudoers 文件中。将报告此事件。” 在 Debian(以及基于 Debian 的 Linux 发行版,如 Ubuntu)上。
sudo 允许系统管理员以 root(管理员)或其他用户身份执行命令。
来自全新 Debian 10 (10.1) Buster 安装的示例,其中 sudo 不起作用:
$ sudo apt update
[sudo] password for logix:
logix is not in the sudoers file. This incident will be reported.
sudo 默认情况下在全新 Debian 安装中不起作用,因为您的用户名不会自动添加到 sudo 组(默认情况下它在 Ubuntu 上工作)。 但是,如果您创建了一个新用户但忘记将其添加到 sudo 组,或者如果您系统中的另一个用户从 sudo 团体。
您可以检查当前登录的用户是否属于 sudo 使用组
groups
命令。 如果
groups
命令不返回
sudo
在基于 Debian 的 Linux 发行版上,那么该用户名不能运行命令
sudo
. 一个不在 Debian 用户名中的 Debian 用户的输出示例 sudo 团体:
$ groups
logix cdrom floppy audio dip video pugdev netdev scanner lpadmin
您可能喜欢:如何在 Debian 10 Buster(稳定版)或 Bullseye(测试版)上安装最新的 Firefox(非 ESR)
解决方案是将该用户添加到 sudo 团体。 但是在这种情况下如何获得 root 用户,因为您无法将用户修改或添加为普通用户? 利用
su -
(或者
sudo su -
),然后将用户添加到 sudo 团体。
所以
获取root权限,然后将您的用户添加到 sudo
组,使用:
su -
usermod -aG sudo YOUR_USERNAME
exit
在哪里:
su
切换到 root 用户,而-
运行一个登录shell,所以像/etc/profile
,.bashrc
,等等被执行(这种方式命令像usermod
将在你$PATH
,因此您不必键入可执行文件的完整路径)。 你也可以使用sudo su -
代替su -
- 你需要更换
YOUR_USERNAME
使用您要添加到的用户名 sudo 团体。 - 我用过了
usermode
将组添加到现有用户,因为它应该适用于任何 Linux 发行版。adduser
或者useradd
也可以用于此(adduser USERNAME -G sudo
) 但它们可能不适用于所有 Linux 发行版。 尽管这篇文章是针对 Debian 的,但我想让它也可以在其他 Linux 发行版上使用(我注意到adduser
例如,在 Solus OS 上不起作用)。 exit
存在 root shell,因此您可以再次以普通用户身份运行命令。
在这之后, sudo 还是不行! 您需要从该用户注销,然后重新登录,然后 sudo 将工作。
这修复了您的 Debian 机器上的“用户名不在 sudoers 文件中。此事件将被报告”问题,但在某些情况下您可能会遇到另一个问题 – sudo 默认情况下可能根本没有安装。 例如,在最小的 Debian 安装中就是这种情况。 在这种情况下,当您尝试使用以下命令运行命令时,您会看到这样的错误 sudo:
$ sudo apt update
bash: sudo: command not found
在这种情况下,安装
sudo
在 Debian 上是这样的:
su - #or 'sudo su -'
apt install sudo
exit
您可能喜欢的更多 Debian 相关文章:
- 如何在 Debian、Ubuntu 或 Linux Mint 中使用 Apt 将软件包降级到特定版本
- 如何在 Debian、Ubuntu 或 Linux Mint 中显示已安装、升级或删除的软件包的历史记录 [dpkg]
- 如何在 Ubuntu、Debian 或 Linux Mint 上列出存储库中的所有软件包 [APT]
- 如何在 Ubuntu、Debian 或 Linux Mint 上找到提供文件(已安装或未安装)的软件包