如何在没有密码的情况下恢复 sudoers 文件的权限?

如何在没有密码的情况下恢复 sudoers 文件的权限?

完整的故事:

我启动了运行 RHEL 7.1 的 Amazon EC2“层”(VPS) 并创建了 ssh 密钥。

EC2 自动为新的 Rhel VPS 创建一个名为 ec2-user 的用户,并且它具有权限(在 sudoers 文件中):

ec2-user    ALL = NOPASSWD: ALL

我创建了一个名为“e”的新用户(带有密码),并尝试将其添加到 sudoers 文件中。

当我尝试使用 VI 编辑 /etc/sudoers 文件时,它说该文件是只读的,所以我将其权限更改为 600,现在每次我尝试使用“sudo”命令执行某些操作时,我都会收到错误:

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

我无法将其改回 440,因为我需要 root 才能执行此操作,而且我无法执行“sudo”。

我在某处读到解决方案是运行

pkexec chmod 0440 /etc/sudoers

但它要求没有任何密码的 ec2 用户输入密码:

==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/bin/chmod' as the super user
Authenticating as: Cloud User (ec2-user)
Password: 

polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

This incident has been reported.

现在怎么办?有人知道如何继续制作 sudoers 文件 440 agin 吗?

答案1

是的 - 这肯定是一个“陷阱”。visudo以后使用可以避免这个问题。我有一个 CentOS 7 虚拟机,它与 RHEL7 本质上是一样的;我能够su -在不使用的情况下成为 root sudo,因为我知道 root 密码。您知道 root 用户的密码吗?

答案2

通常,sudo这是提升 EC2 实例权限的唯一方法,因为 Amazon 方便地为用户 ( ec2-user) 提供 sudo 权限。可能很少有人费心为 设定密码root,因为大多数人都使用预定义的用户。这个问题就是这样。

恢复这台机器的方法是

  • 关闭机器
  • 将其"/"磁盘从损坏的机器上分离(记住哪个设备,可能/dev/sda1
  • 将该磁盘附加到工作机器(这会分配一个设备
  • mount工作机器上的磁盘(使用设备
  • 修复权限(您sudo在工作机器上有权限)
  • umount磁盘
  • 从工作机器上拆下并重新连接到损坏的机器上
  • 启动工作机

拥有多台机器会有所帮助,但即使仅需要一台机器进行维修,也可以在大约一小时内创建、使用和删除。

进一步阅读:

答案3

如果该实例不包含任何重要内容,我建议将其记为一次学习经历,然后将其抛弃并重新开始。如果必须修复它,您可以关闭该实例,保存磁盘映像,然后将其安装到另一个实例上并修复权限。

答案4

如果启用了 root 用户,请使用“su”命令或“login root”命令进入 root shell。然后尝试

chmod 440 /etc/sudoers 

相关内容