我已经设置了一个 EC2 实例(PHP、MySQL、phpMyAdmin)。
昨晚我不小心执行了一些弄乱权限的命令。
我可以像root
以前一样登录(使用 puTTy 到 ssh),但是现在当我尝试使用 登录时,root
出现错误,提示以 身份登录ec2-user
而不是root
。
现在,如果我使用 登录ec2-user
并执行sudo
。我收到错误sudo: effective uid is not 0, is sudo installed setuid root?
。当我尝试使用su
或登录时su root
。我收到Password:
并且我没有设置任何密码,默认密码NO PASSWORD
也不起作用。
现在,我无法授予权限sudo
,root
因为sudo
它已损坏,并且我无法登录来root
更改权限,因为它要求输入密码。
我该如何解决这个问题?
答案1
听起来运行的命令是修改 OS 文件的 chmod 或 chown 命令(“sudo:有效 uid 不为 0,sudo 是否安装了 setuid root?”)。这可能是递归 (-R) 更改或 * 更改。
因此,修复所有损坏的东西往往是不值得的。
我会:
- 对与您的实例关联的每个卷进行快照。
- 从每个快照创建一个卷。
- 将这些卷附加到新实例。
- 安装它们。
- 从损坏的服务器查看根的历史记录以了解发生了什么。
- 备份所有数据(网站目录、数据库文件等)
- 创建一个新实例来接管损坏的旧实例。
- 还原到新实例。
- 删除旧实例。
- 关闭用于安装从快照创建的卷的实例。
- 等待几天以确保一切正常。
- 小心地删除不再使用的卷、快照和实例。
还要研究弹性 IP、Chef、SaltStack 和定期自动快照(小心,如果做错了,可能会代价高昂。)