AWS 上的 ubuntu 系统,/usr 以下的权限被改后无法读取了, root 没有创建,怎么解?

2022-03-28 11:10:26 +08:00
 uil330

又是给公司的 SB 们擦屁股的一天...

----------------前提概要----------------------- 公司有个服务跑在 aws 上,本来跑的好好的,有个 sb 非要用 sudo 来部署普通用户权限的东西。 用也算了,结果它在 /usr 下执行了一句 sudo chmod 744 . 于是直接崩盘,普通用户连 sudo 都执行不了了

----------------求问部分----------------------- 于是问题来了,怎么才能救活这个系统呢 目前状况是:

  1. 系统用普通用户能进,但是什么都做不了,甚至 wget 之类的都不行,因为权限被卡了
  2. ubuntu 默认是 root 不启用,所以也没办法用 root 来改
  3. 一般来说主机上的话直接在 grub 之类的地方改成紧急模式就行,但是 aws 不熟,实在不知道怎么设置启动设置
  4. EC2 Instance connect 和串口终端都打不开

目前想到的解决方案是:

  1. 找出 aws 系统类似于 grub 的启动设置部分
  2. 把这个储存挂载在其他的 aws 实例上来修改

求问 aws 的大佬们怎么救?

7092 次点击
所在节点    云计算
47 条回复
uil330
2022-03-28 12:22:06 +08:00
@CRVV 但是现在 scp ,wget 之类的没法用也传不上去了。。。
iBugOne
2022-03-28 12:24:37 +08:00
「把这个储存挂载在其他的 aws 实例上来修改」

这是你现在能用的最好的办法。把这个问题实例关机,新开一个 T3.micro 把旧实例的 EBS 硬盘挂上去,在新机器里操作。注意 /usr 下的权限挺复杂的,一股脑 chmod 755 并不一定能解决问题,个别 binary 还有 suid 等设置需要准确恢复。另外 /usr/lib 和 /usr/libexec 等地方还有一些 755 的东西(比如 git )。系统初步能用之后尝试 apt install --reinstall 所有包,能正确恢复每个包里的文件的权限

GRUB 啥的就别折腾了。

最后对于 root ,建议的做法是统一清空 root 密码( passwd -d ),这样出现故障需要通过 tty 来救援的时候可以直接 root 进去处理(如果还能用的话)
uil330
2022-03-28 12:32:20 +08:00
@iBugOne 现在就按老哥的思路走了
skiy
2022-03-28 12:35:21 +08:00
直接在别的机子上传一下“bin”下的二进制文件,用绝对路径运行命令,行不行得通?
julyclyde
2022-03-28 13:02:21 +08:00
su/sudo 本身+s 权限,如果 chmod 0744 之后,第一位 0 就把 setuid 给去掉了
leoleoasd
2022-03-28 13:06:06 +08:00
拷过去的 sudo 也不行,sudo 二进制文件的 owner 必须是 root
danc
2022-03-28 13:10:37 +08:00
尝试导出数据,重装系统吧
msg7086
2022-03-28 13:11:28 +08:00
重装系统可能是最快的办法。
Sephirothictree
2022-03-28 14:16:09 +08:00
wwbfred
2022-03-28 14:18:09 +08:00
他是-R 了么?理论上不-R 不应该这么麻烦啊,直接开台新机子作为数据盘挂上去就行了。
-R 的话你就得想办法恢复所有权限了,这就十分坑爹了,一个没修好就不知道哪里有坑,建议干脆重装吧。
wwbfred
2022-03-28 14:25:00 +08:00
实在没法重装可以试试去一台正常的机子下把所有 /usr 下的权限遍历一遍记录下来,再到故障机上恢复相同权限。然后特殊文件和没被处理的文件手动处理。如果你自己的数据没用到复杂的权限管理,我觉得值得一试,也算是没有办法的办法吧。
Puteulanus
2022-03-28 14:28:11 +08:00
HUNYXV
2022-03-28 14:54:16 +08:00
能进救援模式吗?
ivan_wl
2022-03-28 14:57:17 +08:00
把正常 /usr 目录下的打个包,mount 到这个机器的 /usr 目录下?
dangyuluo
2022-03-28 15:09:02 +08:00
AWS 的话可以尝试用 user data 来修改`/usr`目录里的权限。`user_data`是以 root 执行的。另外 AWS 的 Ubuntu 是有默认启用 root 账户的。
yzbythesea
2022-03-28 15:30:21 +08:00
为什么不再开个实例?是因为有持久化数据放在 ec2 上的?
xiaket
2022-03-28 16:55:08 +08:00
我觉得你们对云计算是不是有什么误解, 云计算不是买 VPS 啊同学... 机器应该被当作牲口而不是宠物啊
AS4694lAS4808
2022-03-28 18:32:35 +08:00
想问下权限怎么改回去的。。那么多文件
ha0zi
2022-03-28 21:08:43 +08:00
菜鸟好奇问问,`sudo chmod 744 .` 那么也就是在 `/usr` 这一级目录下无法访问,好奇问问 `/bin` 下的文件不能执行吗?没有尝试过也不想尝试 , 如果加了 `-R` 我敬你是条汉子
shequ2046
2022-03-28 21:41:03 +08:00
AWS 就是这么麻烦,只能重新挂载,没有其他办法了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/843322

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX