本文介绍在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的高级选项”:
在下一个屏幕中,选择“恢复模式”选项并按Enter:
接下来,选择“Drop to root shell prompt”选项并按Enter键:
你现在以root用户身份进入恢复模式:
输入以下命令以在读/写模式下挂载根(/)文件系统:
mount -o remount,rw /
现在,添加你从sudo组中删除的用户。
在我的例子中,我使用以下命令将名为'sk'的用户添加到sudo组:
adduser sk sudo
然后,输入exit以返回到恢复菜单,选择Resume以启动Ubuntu系统:
按ENTER继续登录正常模式:
现在检查是否已恢复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命令。
- 1 玩客云刷armbian架设nginx php mysql 及可道私有云总结
- 2 centos安装好mysql但是无法启动问题(Job for mysqld.service failed because the control process exited with error code.)
- 3 Ubuntu缺少libncurses.so.5的解决办法
- 4 Grafana之Gauge和Bar Gauge使用(第十一篇)
- 5 RHEL 8 安装 Oracle 19c 提示缺少 libnsl.so.1
- 6 df空间占用已满,但du查看home目录空间占用却很少
- 7 vim.fault.GenericVmConfigFault
- 8 cron: can’t lock /var/run/crond.pid, otherpid may be 2699: Resource temporarily unavailable
- 9 linux-kernel – 将设备树中断标志映射到devm_request_irq
- 10 CentOS 7.7 yum方式安装配置Zabbix 4.0 LTS详解(二)
精彩评论