当前位置: 首页>>技术教程>>正文


如何修改一个无效的’/etc/sudoers’文件?

, ,

问题描述

如何编辑无效的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

然后回复你的错误

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/198.html,未经允许,请勿转载。