如何修改无效的“/etc/sudoers”文件?

如何修改无效的“/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

答案1

在现代 Ubuntu 系统(以及许多其他 GNU/Linux 发行版)上,修复损坏的sudoers文件实际上非常容易,并且不需要重新启动、使用实时 CD 或物理访问机器。

要通过 SSH 执行此操作,请登录到计算机并运行命令pkexec visudo。如果您可以物理访问该计算机,则不需要 SSH;只需打开终端窗口并运行该pkexec命令即可。

假设你(或其他用户)被授权使用rootPolicyKit 来运行程序,你可以输入你的密码,然后它将visudo作为运行root,然后你就可以修复你的/etc/sudoers

如果您需要编辑其中一个配置文件/etc/sudoers.d(在这种情况下并不常见,但有可能),请使用。pkexec visudo -f /etc/sudoers.d/filename

如果您遇到相关情况,需要以 root 身份执行其他系统管理命令来解决问题(在这种情况下也不常见,但在其他情况下很常见),您可以使用 启动交互式 root shell pkexec bash。一般来说,您运行的任何非图形命令sudo都可以改为运行pkexec

(如果系统上有多个用户帐户被授权运行程序,就像rootPolicyKit 一样,那么对于任何操作,你都会被要求选择要使用哪一个,然后再被要求输入密码。)


如果这不起作用(例如,如果没有用户通过 PolicyKit 获得以 root 身份运行程序的授权),则从 Ubuntu Live CD(例如您可能用来安装 Ubuntu 的 CD)启动并为已安装的系统安装文件系统。您可以通过运行sudo parted -l查看分区来执行此操作——可能只有一个 ext4 分区,那就是根文件系统。

假设已安装的 Ubuntu 系统的根文件系统位于/dev/sda1。那么您可以使用 挂载它sudo mount /dev/sda1 /mnt。然后您可以使用 编辑已安装系统的 sudoers 文件sudo nano -w /mnt/etc/sudoers。或者,更好的是,您可以使用 编辑它

sudo visudo -f /mnt/etc/sudoers

(这将阻止您保存具有不正确语法的 sudoers 文件)。

答案2

始终使用visudo编辑 sudoers 文件,切勿直接自行编辑。除非验证成功,否则它将阻止您将其保存到磁盘。

答案3

输入:

pkexec visudo

然后改变最后一行

#includedir /etc/sudoers

到:

#includedir /etc/sudoers.d

它应该可以解决你的问题。

答案4

如果其他人像我一样没有执行命令安装,或者无法运行 vi、visudo、nano 或任何其他编辑器来更改 sudoers 文件,您可以通过这个过程来确保..我被保存了:

  • 重启
  • 启动时按住 Shift 键以选择恢复模式(输入)
  • 以 root 身份进入命令行(我的 grub 菜单中的倒数第二个选项)
  • 重新挂载启动设备为 rw,并为用户应用执行权限,并编辑文件

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    visudo /etc/sudoers
    

改正错误,开心就好:)

相关内容