本文介绍在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命令。
相关主题 |