在编写脚本而不使用visudo来编辑sudoers文件时,脚本没有检查问题,并且我在sudoers文件中引入了一些错误的编辑,因此根本无法使用sudo。 (我知道我做了一件非常糟糕的事情,应该使用了类似的东西)

问题:无论如何,我是否可以从此错误中恢复,还是必须销毁VM并从此开始用新的刮擦吗?

评论

您可以下载一些样本sudoers文件并使sudoers起作用。

@KlwntSingh是的,但是无法访问sudo命令,ec2-user无法执行任何root命令,这是问题的核心(也许这很令人困惑!)

#1 楼

用户数据如何?

我相信添加“#cloud-boothook”允许强制用户数据在每次重启时运行。

#cloud-boothook
#!/bin/bash
echo 'test' > /home/ec2-user/user-script-output.txt


如果是这样,您可以希望修复sudo脚本...或安装/添加AWS运行命令配置https://aws.amazon.com/blogs/aws/new-ec2-run-command-remote-instance -scale-management /

要确定它是否是EBS驱动器,可以分离并修复然后重新连接到原始系统上。虽然有点痛苦。

#2 楼

通常,要从此类错误中恢复,就需要编辑引导加载程序以强制使用root shell。由于您无法物理访问(非物理)计算机,因此情况有所不同。

如果这是EBS引导驱动器,则可以尝试将其拆下并固定在另一台计算机上,然后重新附加。

这是一个很好的机会,了解为什么对所有内容使用配置管理工具很有用:如果这样做,则只需几分钟和一个命令即可替换实例。

评论


在某些情况下,无法将分离的根卷重新附加到同一台计算机。通过创建分离卷的快照(在从实例中将其删除之前或之后)和该快照中的卷可以避免这种情况。

–chupasaurus
17年7月27日在6:40

#3 楼

如果您知道root密码,通常可以键入“ su”切换到超级用户。然后,您可以编辑sudoers文件以修复sudo。

评论


我知道,但是我从未为根帐户分配密码,因此我的问题是...

–阿多尼斯
17年7月27日在7:33

#4 楼

您需要使用su命令具有root用户访问权限,因为sudo似乎不可用,然后进行适当的更改。现在最重要的一点是:

总是使用visudo编辑sudoers文件

为什么?它会告诉您进行更改后是否存在任何错误,从而防止混乱sudo访问。


要解决损坏的sudo,请遵循本指南。


*在虚拟计算中可能无法实现。

#5 楼

分离根卷,将其附加到正在运行的实例,然后还原该卷中的sudoers文件。
分离卷并重新连接到有问题的实例,然后重新启动它。
这应该起作用。