如何在 Ubuntu Linux 中恢复用户的 Sudo 权限

本教程解释了如何恢复 sudo 在 Ubuntu Linux 及其衍生产品(如 Linux mint、Pop OS 操作系统)上从恢复模式授予用户特权。 我在 Ubuntu 18.04 LTS 系统上测试了本指南。 但是,它也应该适用于其他 Linux 发行版。

介绍

前几天我在测试如何 添加一个普通用户到 sudo 分组并删除给定的权限 让他在 Ubuntu 上再次成为普通用户。

在测试时,我从 'sudo' 团体。 如您所知,用户应该在 sudo 组来执行任何管理任务。 但是,我只有一个超级用户,我已经拿出了他的 sudo 特权。

每当我运行命令时 sudo 前缀,我遇到了一个错误——”sk 不在 sudoers 文件中。 此事件将被举报”。

我不能做任何行政工作。 我无法使用 ‘ 切换到 root 用户sudo su’命令。 如您所知,在 Ubuntu 中默认禁用 root 用户,所以我也无法以 root 用户身份登录。

你有没有遇到过这样的情况? 不用担心! 今天小编就来教大家怎么解决坏掉的 sudo Ubuntu Linux 系统上的用户的权限。

恢复 sudo 特权

第1步: 引导您的 Linux 系统进入恢复模式。

为此,请重新启动系统并按住 转移 键启动时。 您将看到 grub 启动菜单。 选择 “Ubuntu 的高级选项” 从启动菜单列表中。

在 Grub 菜单中选择“Ubuntu 的高级选项”

在下一个屏幕中,选择 “恢复模式” 选项并按 ENTER:

在 Grub 菜单中选择恢复模式

接下来,选择 “拖放到 root shell 提示符” 选项并按 ENTER 键:

选择 drop to root shell 提示选项选择“Drop to root shell prompt”选项

您现在以 root 用户身份处于恢复模式。

Ubuntu 恢复模式Ubuntu 恢复模式

第2步: 以读/写模式挂载根文件系统。 为此,请键入以下命令以挂载 root (/) 文件系统处于读/写模式。

mount -o remount,rw /

第 3 步: 现在,添加您从 sudo 团体。

就我而言,我正在添加名为 'sk'sudo 使用以下命令进行分组:

adduser sk sudo
恢复 sudo 从 Ubuntu 恢复模式授予用户权限恢复 sudo 从 Ubuntu 恢复模式授予用户权限

第4步: 然后,输入 出口 返回到恢复菜单。 选择 恢复 启动你的 Ubuntu 系统。

恢复正常启动恢复正常启动

按 ENTER 继续登录普通模式:

Exit  Ubuntu中的恢复模式Exit Ubuntu中的恢复模式

第 5 步: 现在检查是否 sudo 特权已恢复。

为此,请从终端键入以下命令。

$ sudo -l -U sk

样本输出:

[sudo] password for sk: 
Matching Defaults entries for sk on ubuntuserver:
env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

User sk may run the following commands on ubuntuserver:
(ALL : ALL) ALL

正如您在上面的消息中看到的,用户 sk 现在可以运行所有命令 sudo 字首。 恭喜! 您已成功恢复 sudo 给用户的特权。

还有其他可能导致破碎的 sudo

请注意,我实际上这样做是为了向您展示如何 恢复破碎 sudo 特权 给用户。 我把自己从 sudo 分组并修复损坏的 sudo 如上所述的特权。

如果你只有一个,不要这样做 sudo 用户。 而且,此方法仅适用于您拥有的系统 物理访问. 如果是远程服务器或vps,则很难修复。 您可能需要托管服务提供商的帮助。

此外,还有其他两种可能导致损坏 sudo.

  • /etc/sudoers 文件可能已被更改。
  • 您或某人可能已更改 /etc/sudoers 文件。

修复损坏 sudo 在 Ubuntu 中

如果您完成了上述任何一项或所有事情并以破碎告终 sudo,请尝试以下解决方案。

解决方案1:

如果您更改了 /etc/sudoers 文件,如前所述进入恢复模式。

备份现有的 /etc/sudoers 进行任何更改之前的文件。

cp /etc/sudoers /etc/sudoers.bak

然后,打开 /etc/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/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# 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

一旦您修改了内容以像这样反映,请按 CTRL+Xy 保存和 close 文件。

最后,输入 exit 并选择 恢复 启动您的 Ubuntu 系统以退出恢复模式并继续以普通用户身份启动。

现在,尝试使用运行任何命令 sudo 前缀来验证是否 sudo 特权被恢复。

解决方案2:

如果您更改了权限 /etc/sudoers 文件,此方法将修复损坏的 sudo 问题。

在恢复模式下,运行以下命令将正确的权限设置为 /etc/sudoers 文件:

chmod 0440 /etc/sudoers

为文件设置适当的权限后,键入 exit 并选择 恢复 以正常模式启动您的 Ubuntu 系统。 最后,验证您是否可以运行任何 sudo 命令。

结论

在本指南中,我们查看了导致损坏的原因 sudo,以及如何恢复 sudo 在 Ubuntu 及其衍生产品中,从恢复模式授予用户权限。

建议阅读:

  • 如何在 Linux 中更改默认 Sudo 日志文件
  • 如何在你的 Linux 系统中查找所有 Sudo 用户
  • 如何在 Linux 中运行没有 Sudo 密码的特定命令