云网牛站
所在位置:首页 > Linux教程 > 在Ubuntu 18.04系统下将sudo权限还原给用户的方法

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

2019-02-19 21:01:53作者:刘若鑫稿源:云网牛站

本文介绍在Ubuntu 18.04系统下将sudo权限还原给用户的方法。

 

背景

曾在测试如何将常规用户添加到sudo组并删除给定的权限(在Ubuntu系统上为用户授予和删除sudo权限的方法),使他在Ubuntu上再次成为普通用户。在测试时,我从“sudo”组中删除了我的管理用户,如你所知,用户应该在sudo组中执行任何管理任务,但是,我只有一个超级用户,我已经拿出了他的sudo权限,每当我运行带有sudo前缀的命令时,我都会遇到错误sk不在sudoers文件中,这一事件将被报道。我不能做任何管理任务,我无法使用'sudo su'命令切换到root用户。如你所知,在Ubuntu中默认禁用root用户,因此我无法以root用户身份登录。你曾经遇到过这种情况吗?别担心,本文解释了如何在Linux上为用户恢复sudo权限。我在Ubuntu 18.04系统上进行了测试,但它也适用于其他Linux发行版。

 

恢复sudo权限

将Linux系统引导至恢复模式。

为此,请重新启动系统并在启动时按住SHIFT键,你将看到grub启动菜单(可参考:Ubuntu 18.10下安装Grub Customizer 5.1.0配置grub2图形化界面),从启动菜单列表中选择“Ubuntu的高级选项”:

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

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

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

接下来,选择“Drop to root shell prompt”选项并按Enter键:

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

你现在以root用户身份进入恢复模式:

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

输入以下命令以在读/写模式下挂载根(/)文件系统:

mount -o remount,rw /

现在,添加你从sudo组中删除的用户。

在我的例子中,我使用以下命令将名为'sk'的用户添加到sudo组:

adduser sk sudo

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

然后,输入exit以返回到恢复菜单,选择Resume以启动Ubuntu系统:

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

按ENTER继续登录正常模式:

在Ubuntu 18.04系统下将sudo权限还原给用户的方法

现在检查是否已恢复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用户,请不要这样做,而且,此方法仅适用于你具有物理访问权限的系统,如果是远程服务器或vps,则很难修复它,可能需要托管服务提供商的帮助。

此外,还有另外两种可能导致破坏sudo:

1、/etc/sudoers文件可能已被更改。

2、你或某人可能已更改/etc/sudoers文件的权限。

如果你已完成上述任何一项或所有操作并最终破坏了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+X和y保存并关闭该文件。

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

现在,尝试使用带有sudo前缀的run any命令来验证是否已恢复sudo权限。

解决方案2:

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

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

chmod 0440 /etc/sudoers

为文件设置适当的权限后,输入“exit”并选择Resume以正常模式启动Ubuntu系统,最后,验证是否能够运行任何sudo命令。

 

相关主题

在Linux系统中运行没有sudo密码的特定命令

精选文章
热门文章