问题描述
如何编辑无效的sudoers文件?它抛出错误,它不允许我再次编辑来修复它。
以下是发生的情况:
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
最佳解决方法
在现代的Ubuntu系统(以及许多其他GNU /Linux发行版)上,修复损坏的sudoers
文件实际上非常简单,不需要重新启动,使用Live CD或物理访问机器。
要通过SSH执行此操作,请登录到计算机并运行命令pkexec visudo
。如果您有机器的物理访问权限,则SSH不是必需的;只需打开一个终端窗口并运行该pkexec
命令。
假设您(或其他用户)被授权使用PolicyKit作为root
运行程序,您可以输入您的密码,然后它将运行visudo
作为root
,并且您可以修复您的/etc/sudoers
。
如果您需要编辑/etc/sudoers.d
中的其中一个配置文件(在这种情况下非常见,但可能),请使用pkexec visudo -f /etc/sudoers.d/filename
。
如果您有相关的情况,必须以root身份执行其他系统管理命令才能解决问题(在这种情况下也不常见,但在其他情况下很常见),则可以使用pkexec bash
启动交互式root shell。一般来说,您使用sudo
运行的任何non-graphical命令都可以使用pkexec
运行。
(如果系统上有多个用户帐户被授权使用PolicyKit作为root
运行程序,那么对于这些操作中的任何一个,系统会要求您在询问您的密码之前选择要使用哪一个用户帐户。)
如果这不起作用 – 例如,如果没有授权用户通过PolicyKit以root身份运行程序的授权用户,那么从Ubuntu live CD启动(例如您可能用于安装Ubuntu的CD)并挂载文件系统安装系统。你可以通过运行来做到这一点
sudo parted -l
查看你的分区 – 可能只有一个ext4分区,这就是根文件系统。
假设已安装的Ubuntu系统的根文件系统位于/dev /sda1上。然后你可以用sudo mount /dev/sda1 /mnt
安装它。然后,您可以使用sudo nano -w /mnt/etc/sudoers
编辑安装的系统的sudoers文件。或者,甚至更好,您可以使用编辑
sudo visudo -f /mnt/etc/sudoers
(这会阻止你使用不正确的语法保存sudoers文件)。
次佳解决方法
始终使用visudo
编辑sudoers文件,绝不要直接编辑它自己。它会阻止您将其保存到磁盘,除非它被验证。
第三种解决方法
输入:
pkexec visudo
然后改变最后一行
#includedir /etc/sudoers
至:
#includedir /etc/sudoers.d
它应该解决你的问题。
第四种方法
如果像我这样的其他人没有安装pkexec,或者无法运行vi,visudo,nano或任何其他编辑器来更改sudoers文件,那么您可以确定使用这个过程。我被保存了下来:
-
重启
-
启动时按住shift键可以选择恢复模式(输入)
-
以root用户身份输入命令行(我的grub菜单中的第二个选项)
-
为rw重新安装引导设备,并为用户应用可执行权限,并编辑文件
mount -n -o remount,rw / chmod u+x /etc/sudoers nano /etc/sudoers
修复那个错误,并开心:)
第五种方法
#include sudoer.d没有任何错误,除去#include sudoer.d将没有任何区别。
但请确保您没有任何语法错误。我有同样的问题,但花了几个小时来修复,只是发现它们是语法错误。参考手册并使其正确。
例如说你的用户名是:dolly我用下面哪个是错的
dolly ALL = (ALL) ALL NO PASSWD: ALL
正确的语法是
dolly ALL = (ALL) ALL //give permission to everything, not good
要么
dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission
希望这可以帮助
第六种方法
如果你搞砸了你的sudoers文件。你需要:
-
重启进入恢复模式(在启动过程中点击转义,在grub屏幕上选择恢复模式选项)
-
选择’Enable networking’选项(如果你没有将文件系统挂载为read-only,谁知道)
-
选择’Drop to root shell’选项
-
运行visudo,修复你的文件
-
用正常的grub选项重新启动
来源: – http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
第七种方法
运行恢复模式,然后输入这个
chown -R root:root /etc/sudoers.d
chmod u=rwx,g=rx,o=rx /etc/sudoers.d/
chmod u=r,g=r,o= /etc/sudoers.d/*
只有组和用户根应该读取privelege
第八种方法
您也可以在grub中编辑引导条目。
只需重新启动电脑,然后等待grub显示。然后按”Ubuntu”条目上的”e”进行编辑。
找一行“linux =”或“kernel =”的行,并简单地将”single”添加到该行的末尾。
然后按F10启动这个临时修改的启动项。这会给你一个shell(没有GUI)和root权限,你可以用s.th编辑sudoers文件。像nano /etc /sudoers恢复到之前的状态。
然后重新启动并完成。
第九种方法
您也可以在tty
控制台上以root用户身份登录Ctrl
+ Fn
(Fn
从1到6)并运行visudo
。
第十种方法
pkexec visudo
然后回复你的错误