8 sudo amazon-web-services sudoers amazon-ec2
我有一个 Amazon EC2 实例。我可以正常登录,但是“su”和“sudo”现在都不能正常工作(以前它们可以正常工作):
“su”要求输入密码,但我使用 ssh 密钥登录,我认为 root 用户甚至没有密码。
“sudo <anything>
”这样做:
sudo: /etc/sudoers is owned by uid 222, should be 0
sudo: no valid sudoers sources found, quitting
Run Code Online (Sandbox Code Playgroud)
我可能做了“chown ec2-user /etc/sudoers”(或者,更可能是“chown -R ec2-user /etc”,因为我厌倦了rsync失败),所以这是我的错。
我该如何恢复?我停止了实例并尝试了 AWS EC2 控制台上的“查看/更改用户数据”选项,但这没有帮助。
编辑:我意识到我可以杀死这个实例并创建一个新实例,但希望避免极端情况。
在这种情况下,我认为您应该能够使用第二个实例来解决问题:
小智 5
使用该lsblk
命令查看可用磁盘设备及其安装点(如果适用),以帮助您确定要使用的正确设备名称。
ec2-user ~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdf 202:80 0 100G 0 disk
xvda1 202:1 0 8G 0 disk /
Run Code Online (Sandbox Code Playgroud)lsblk 的输出从完整设备路径中删除 /dev/ 前缀。在这个例子中,/dev/xvda1
挂载为根设备(注意 MOONTPOINT 被列为 /,Linux 文件系统层次结构的根),并/dev/xvdf
附加,但尚未挂载。
使用以下命令为卷创建挂载点目录。挂载点是卷在文件系统树中的位置,也是挂载卷后读取和写入文件的位置。替换 mount_point 的位置,例如 /data。
sudo su
cd /mnt
mkdir other
mount /dev/xvdf other
cd /
chown -R root:root /mnt/other/etc/
exit
Run Code Online (Sandbox Code Playgroud)返回 AWS 并停止实例