linux服务器中/etc/sudoers文件报错导致sudo权限无法使用

报错:

1
2
3
4
5
  ~$ sudo
  sudo: >>> /etc/sudoers:syntax error 在行 21 附近<<<
  sudo: /etc/sudoers 中第 21 行附近有解析错误
  sudo: 没有找到有效的 sudoers 资源,退出
  sudo: 无法初始化策略插件

参考了多篇文章,最后解决问题:
https://blog.csdn.net/geekqian/article/details/82912518
https://blog.csdn.net/davidsky11/article/details/23478131
https://blog.csdn.net/gsh_hello_world/article/details/80178953
https://blog.csdn.net/qq_42055843/article/details/87929868
https://blog.csdn.net/ahmcwt/article/details/107294625

第一种情况(不知道root密码):

很悲惨,你不知道root密码是什么,这时候你需要通过ubuntu进入恢复模式,修改root密码,然后再通过root用户修改/etc/sudoers文件。1-3需要在服务器主机上操作,后面在自己本地命令行里操作。

1、重启ubuntu,进入恢复模式

1)在重启的过程中长按shift键或者esc键。
A. 第一种情况:长按shift键可能直接会到恢复模式选择处,如下图所示,这时按下键到advanced项,按回车。
在这里插入图片描述
B. 第二种情况:(我又很惨,长按shift没有用)长按esc键,会进入grub命令窗口,你看到的应该是:

1
grub>

这时候,别慌,输入normal,即:

1
grub>normal

然后,按下esc键,我们就可以看到这个图了,选advanced项,回车。
在这里插入图片描述
2) 选择恢复模式
注意:下键找到recovery mode,按‘e’键,不要按回车!!!这样才能编辑修改。
按回车你将进入recovery menu,里面只能读不能改!!!
在这里插入图片描述

2、删除并添加命令

在显示页面中找到(仔细找,一定有):

1
ro recovery nomodeset

并删掉,在当前行末尾加上:

1
rw single init=/bin/bash

输完之后,按F10键进行引导。
在这里插入图片描述

3、修改root密码

不知道密码,咱就改一个。上一步操作完之后,会弹出下面图中所示的黑框,会运行到红色箭头所示部位,等待一会儿,按回车,就会出现下面熟悉的root@:
修改root密码:

1
passwd root

然后输入新密码,这次牢牢记住,重启之后,root新密码应该就生效了。
在这里插入图片描述

4、修改/etc/sudoers文件

用自己的用户ssh登陆,然后切换至root用户。
通过su进入root用户,输入密码。

1
su root

1)/etc/sudoers文件可修改
修改/etc/sudoers文件,将错误改正,按i修改文件。

1
vim /etc/sudoers

改完bug之后,按esc,再输入:wq!保存退出。

2)如果此时/etc/sudoers文件是只读文件:
首先修改/etc/sudoers文件权限,改成可读写文件。

1
chmod 777 /etc/sudoers

然后再将错误改正,按i修改文件。

1
vim /etc/sudoers

改完bug之后,按esc,再输入:wq!保存退出。
最后再把/etc/sudoers文件权限还原,

1
pkexec chmod 0440 /etc/sudoers

否则会报如下错误。

1
2
3
sudo: /etc/sudoers 可被任何人写
sudo: 没有找到有效的 sudoers 资源,退出
sudo: 无法初始化策略插件

OKK,大功告成,sudo权限又回来啦!建议大家谨慎修改/etc/sudoers文件!改完检查一下,不然还要重装ubuntu系统。

第二种情况(知道root密码):

知道密码那就很好办了,参考第一种情况的第4步。


手动结束~

我再也不敢修改/etc/sudoers文件忘打冒号了,最后祝大家早日解决问题,脱离苦海!