网站搜索

修复“用户名不在 Sudoers 文件中”的问题。此事件将被报告


在 Unix/Linux 系统中,root 用户帐户是超级用户帐户,因此它可以用来执行系统上可以实现的任何操作。

然而,这在很多方面都可能非常危险——其中之一可能是root用户可能输入错误的命令并破坏整个系统,或者攻击者可能会访问root用户帐户并获得控制权整个系统以及谁知道他/她能做什么。

基于这样的背景,在Ubuntu及其衍生产品中,root用户帐户默认是被锁定的,普通用户(无论是否是系统管理员)只能通过使用root权限来获得超级用户权限。须藤命令。

Ubuntu 系统管理员可能发生的最糟糕的事情之一是失去使用 sudo 命令的权限,这种情况通常称为“sudo 损坏”。这绝对是毁灭性的。

sudo 损坏可能是由以下任一原因引起的:

  • 不应将用户从 sudoadmin 组中删除。
  • /etc/sudoers 文件已更改,以防止 sudoadmin 组中的用户将权限提升至 root< 使用 sudo 命令。
  • /etc/sudoers 文件的权限未设置为 0440

为了在系统上执行关键任务,例如查看或更改重要的系统文件或更新系统,您需要使用 sudo 命令来获得超级用户权限。如果由于我们上面提到的一个或多个原因而拒绝使用 sudo,该怎么办?

下图显示了默认系统用户被阻止运行 sudo 命令的情况:

tecmint@TecMint ~ $ sudo visudo
[ sudo ] password for aaronkilik:
aaronkilik is not in the sudoers file.   This incident will be reported.

tecmint@TecMint ~ $ sudo apt install vim
[ sudo ] password for aaronkilik:
aaronkilik is not in the sudoers file.   This incident will be reported.

如何修复 Ubuntu 中损坏的 sudo 命令

如果您的计算机上恰好只运行 Ubuntu,则在启动后,按住 Shift 键几秒钟即可启动 Grub菜单。另一方面,如果您运行双启动(Ubuntu 与 Windows 或 Mac OS X),那么默认情况下您应该会看到 Grub 启动菜单。

使用向下箭头,选择“Ubuntu 的高级选项”,然后按Enter

您将进入以下界面,选择带有“恢复模式”选项的内核,如下所示,然后按Enter进入“恢复菜单 ” ”。

下面是“恢复菜单”,表明根文件系统已挂载为只读。移至“root Drop to root shell提示符”行,然后按Enter

接下来,按Enter进行维护:

此时,您应该处于 root shell 提示符下。正如我们之前所看到的,文件系统以只读方式挂载,因此,要对系统进行更改,我们需要通过运行以下命令重新挂载为读/写:

mount -o rw,remount /

解决案例 #1 – 将用户添加到 sudo 或 admin 组

假设用户已从 sudo 组中删除,要将用户添加回 sudo 组,请发出以下命令:

adduser username sudo

注意:请记住使用系统上的实际用户名,在我的例子中,它是aaronkilik

或者,在用户已被移出admin组的情况下,运行以下命令:

adduser username admin

解决案例 #2 – 向用户授予 sudo 权限

假设 /etc/sudoers 文件已更改,以防止 sudoadmin 组中的用户将其权限提升到超级用户,然后按如下方式备份 sudoers 文件:

cp /etc/sudoers /etc/sudoers.orginal

随后,打开 sudoers 文件。

visudo

并添加以下内容:

#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbi$

Host alias specification

User alias specification

Cmnd alias specification

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

Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

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

解决案例 #3 – 对 sudoers 文件设置正确的权限

假设/etc/sudoers文件的权限没有设置为0440,则运行以下命令进行修改:

chmod  0440  /etc/sudoers

最后但并非最不重要的一点是,运行所有必要的命令后,输入 exit 命令返回到“恢复菜单”:

exit 

使用右箭头选择并按Enter

继续正常启动顺序:

概括

此方法应该可以正常工作,特别是当涉及管理用户帐户时,除了使用恢复模式之外别无选择。

但是,如果它对您不起作用,请尝试通过下面的反馈部分表达您的体验来回复我们。您还可以提供任何建议或其他可能的方法来解决当前的问题或完全改进本指南。