我不小心在sudoers
文件中犯了一个错误,现在我无法修复它,因为如果我尝试更改文件,它会给出权限被拒绝的消息。如果我用来sudo
打开该文件,则会显示语法错误并且找不到有效的sudoers
源,并且不会执行该命令。我使用的是 raspbian,一种 Debian 风格。
有谁知道如何摆脱这个第22条军规?
答案1
- 如果您知道
root
密码(并且已设置),您可以使用su
Beenroot
和 edit/etc/sudoers
。 - 如果您的根文件系统位于 SD 卡上,您可以将其推出并
/etc/sudoers
在 PC 或任何其他设备上进行编辑(只要它有读卡器)。 - 您可以进入U-Boot(引导加载程序)命令行(通常通过按键盘上的按钮或通过UART)并添加
1
到Linux内核命令行以进入单用户模式。在这种模式下,您将root
并且可以编辑/etc/sudoers
。也可以看看这。
答案2
您将必须启动到单用户模式。
https://serverfault.com/questions/482079/debian-boot-to-single-user-mode
作为 root 用户,您将能够编辑 sudoers 文件来修复它。我强烈建议您visudo
将来使用该命令编辑 sudoers 文件,以避免再次执行此操作,因为 visudo 在保存文件之前会对文件进行语法检查。
答案3
如果您在云实例上,那么您会遇到更多麻烦。
有一些技术取决于发行版,但如果您已经安装并运行了 Docker,那么您通常可以通过 Docker 容器来解决问题。这是因为,通常,Docker 服务以 root 身份运行,对容器内已安装卷所做的任何操作都会受到主机上 root 的影响。
在主机上:
docker run --rm -ti -v /etc:/usr/local/etc busybox sh
“busybox”只是一个不错的小型发行版,下载起来并不需要很长时间。如果您已经有一个包含可用 shell 的 Docker 映像,则只需使用它即可。
在 Docker 容器上:
cd /usr/local/etc
vi sudoers
您可能已将错误文件添加到/etc/sudoers.d/
目录中。在这种情况下,可能只需删除该文件即可。
当您退出容器时,您可以sudo
再次进行。
哇!