我的/etc/sudoers
文件不知何故损坏了,所有具有 sudo 权限的用户都无法执行带有 sudo 前缀的任何命令!
sudo: parse error in /etc/sudoers.d/README near line 1
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
我已经尝试了以前类似问题中建议的几乎所有解决方案,例如
- 多次重启系统
- 尝试修改文件
/etc/sudoers.d/README
但无法成功。 - 在恢复模式下,挂载了文件系统
rw
并尝试修改上述文件,但没有成功 pkexec bash
......还是没用
文件中的行/etc/sudoers.d/README
实际上是一个空行。
你能指导我吗?
谢谢。
答案1
我发现 sudoers README 中的所有行都必须以 为前缀#
。
我不明白为什么运行 sudo 时会处理 README,但未注释的行似乎会破坏它。当我的 Raspberry Pi 中的 SD 卡开始出现故障并损坏了许多文件时,我才偶然发现了这一点。尽管 README 文件不是文件夹中的唯一文件。
答案2
在我的基于 Ubuntu 的系统 (Mint) 上,/etc/sudoers.d/README
全是注释,好像# ...
没有一行不是注释。而其他文件包含/etc/sudoers.d/
空白行,但 sudo 没有错误... 您的空白行可能包含一些奇怪的不可打印字符吗?十六进制编辑器应该可以显示其中的任何奇怪内容。
而且由于 README 文件全是注释,所以 sudo 没有必要工作,除了其中的这条注释:
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
因此,只要该目录中还有另一个文件,您就可以尝试将损坏的 README 文件移出该目录,看看是否有帮助。
并且您应该能够在第 3 次尝试中以恢复模式修改文件,我假设您被授予修改任何文件的权限,例如从实时 cd/dvd/usb 启动,如果您无法编辑文件,则可能是文件和/或文件系统本身已损坏,尝试过fsck
?
这里还有另一个关于如何修复损坏的 sudoers 文件的广受欢迎(赞成)的指南,如果它不起作用,那么我会研究 fsck/损坏的文件系统的可能性。
答案3
我遇到了类似的问题,但问题是由我自己的操作引起的。我已经使用了一个文件
/etc/sudoers.d/randy-sudoers
进行个人改变,正如我被指示做的那样。
我认为自己很聪明,在我的 home 目录外创建一个子目录,并在那里创建一个 randy-sudoers 文件,我作为所有者并具有 rw 权限。我可以用鼠标垫 (Xubuntu) 随意编辑此文件。然后我编写了一个脚本将此文件复制到 /etc/sudoers.d.randy-sudoers 并根据需要更改所有者、组和权限。此链接中讨论了这一点,并标记为一个好主意,但让我告诉你,这是一个坏主意。https://ubuntuforums.org/showthread.php?t=1352310&highlight=visudo+busy
问题是我在文件中犯了一个错误。当我将它复制到 /etc/sudoers.d/randy-sudoers 时,我的 sudo 命令突然不再起作用了。它告诉我文件的第 20 行有错误。我可以在我的主子目录中修改它,但我无法使用 sudo 将其再次复制到 /etc/sudoers。我使用 sudo 的所有尝试都被阻止了,我需要这样做才能进行复制。
经过一番寻找,我发现我需要做的就是运行这个:
pkexec visudo -f /etc/sudoers.d/randy-sudoers
这使我能够绕过 sudo 命令并编辑文件并删除/更正有问题的行,然后再次保存。它提示我另存为
/etc/sudoers.d/randy-sudoers.tmp
我照做了。然后它检查了 tmp 文件的有效性并覆盖了原始有问题的文件。呼!我得救了。