sudoers - Google Compute Engine - 无权访问root

MCG*_*MCG 3 root sudoers google-compute-engine

我有一个运行Asterisk服务器的Google Compute Engine VM实例.我尝试运行时收到此消息sudo:

sudo: parse error in /etc/sudoers near line 21
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
Run Code Online (Sandbox Code Playgroud)

是否有root密码,所以我可以尝试在那里更改它?有什么建议吗?

Mis*_*man 7

看起来您已经手动编辑了/etc/sudoers文件,因此在您通常可以sudo访问时,由于解析错误,您将无法直接执行此操作.

以下是解决这种情况的方法.

1.保存当前的启动盘

  • 转到Developers Console中的实例视图
  • 找到您的VM实例并单击其名称; 你现在应该看一个像这样的URL https://console.cloud.google.com/project/[PROJECT]/compute/instancesDetail/zones/[ZONE]/instances/[VM-NAME]
  • 重要信息:取消选中"删除实例时删除引导磁盘"
  • 删除实例

2.修复/etc/sudoers启动盘

  • 使用自己的启动盘创建新的VM实例; 你应该有权sudo访问这里
  • 上面保存的磁盘作为单独的永久磁盘附加
  • 安装刚刚连接的磁盘
  • 修复/etc/sudoers磁盘上的文件
  • 卸载第二个磁盘
  • 从VM分离第二个磁盘
  • 删除新的VM实例(让它删除它的启动盘,你不需要它)

3.还原原始VM实例

  • 使用您作为启动磁盘的磁盘重新创建原始VM实例

如何在将来避免这种情况

始终使用命令visudo而不是任何文本编辑器直接编辑/etc/sudoers文件,该文件将在保存之前验证文件的内容.


Jor*_*zen 7

我也遇到了这个问题,并且在尝试 gcloud 解决方法时遇到了 Nakilon 报告的相同问题。

我们最终做的是配置一个启动脚本,删除损坏的 sudoers 文件。

所以在你metadata放的东西中:

#/bin/sh

rm "/etc/sudoers.d/broken-config-file"
echo "ok" > /tmp/ok.log
Run Code Online (Sandbox Code Playgroud)

https://cloud.google.com/compute/docs/startupscript