V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
uil330
V2EX  ›  云计算

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

  •  2
     
  •   uil330 · 187 天前 · 6169 次点击
    这是一个创建于 187 天前的主题,其中的信息可能已经有所发展或是发生改变。

    又是给公司的 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 的大佬们怎么救?

    第 1 条附言  ·  187 天前
    问题解决的,总结下方法:
    -------------------------------------------------------
    1. 关闭当前实例,然后把 EBS 解绑
    2. 把 EBS 绑定到同一个区的别的实例上
    3. 加载 EBS 后修改权限
    4. 把 EBS 加载回原来的实例

    反正这次吃了教训,权限管理真的要做齐了
    47 条回复    2022-04-01 15:18:34 +08:00
    proxytoworld
        1
    proxytoworld  
       187 天前
    linux 外行疑问,为什么 /usr 744 就没办法 sudo 了
    ruidoBlanco
        2
    ruidoBlanco  
       187 天前
    有 snapshot 就恢复 snapshot 。/usr 的文件权限并不都是一样的,你即使挂个急救盘上去了也没办法全整对。

    没 snapshot ,谁拉的屎谁负责去吧。
    uil330
        3
    uil330  
    OP
       187 天前
    @proxytoworld 因为 744 的话,等于群组跟其他用户都没法执行了
    lx0758
        4
    lx0758  
       187 天前
    interesting
    proxytoworld
        5
    proxytoworld  
       187 天前
    chmod 没加 -R 的话 应该没有递归的重置权限?
    proxytoworld
        6
    proxytoworld  
       187 天前
    有没有一种可能,把 sudo 拷出来,在其他目录执行
    aru
        7
    aru  
       187 天前
    aws 的启动镜像能挂载到别的 ecs 上不?如果能就可以解决,如果不能大概就解决不了了
    FrankAdler
        8
    FrankAdler  
       187 天前
    /usr 的权限被更改了,不影响别的吧,sudo su - root 不能切?
    defunct9
        9
    defunct9  
       187 天前   ❤️ 12
    开 ssh ,让我上去看看
    uil330
        10
    uil330  
    OP
       187 天前
    @FrankAdler /usr 当前用户不能执行的话,sudo 就执行不了
    wd
        11
    wd  
       187 天前 via iPhone
    磁盘挂别的机器 然后备份数据 新建 node 吧
    uil330
        12
    uil330  
    OP
       187 天前
    @proxytoworld 现在问题就是根本访问不了 /usr ,而且因为 scp 啊 python 之类的命令都在那下面,等于啥都执行不了

    甚至连编辑器都不行,只有 dd 之类的系统命令可以用

    要真・手搓二进制代码了
    NekoNeko666
        13
    NekoNeko666  
       187 天前 via iPad
    NekoNeko666
        14
    NekoNeko666  
       187 天前 via iPad
    @NekoNeko666 导出数据然后新建一个 instance 。
    CRVV
        15
    CRVV  
       187 天前
    不用手搓二进制,把编译好的 executable 传上去就能执行了

    关键是你还有什么方式能拿到 root 权限,如果没有了,就得用 Linux 的漏洞了,好像有过几个,也许可以试试
    随便找了一篇 https://payatu.com/guide-linux-privilege-escalation
    Ljcbaby
        16
    Ljcbaby  
       187 天前
    cve-2021-4034 之类的试试?
    yanqiyu
        17
    yanqiyu  
       187 天前
    不能改 kernel cmdline 吗,可以的话先进单用户把权限改回去
    yanqiyu
        18
    yanqiyu  
       187 天前
    @Ljcbaby
    > cve-2021-4034 之类的试试?

    polkit 也是靠 suid 二进制提权的,这里整个 /usr 都没了 o+x 权限,估计只有进单用户想办法了
    blessingsi
        19
    blessingsi  
       187 天前
    cp 是不是在 bin 下面呀。可以 cp -av 把 sudo copy 出来吗
    uil330
        20
    uil330  
    OP
       187 天前
    @yanqiyu 现在就在研究 aws 怎么改 kernel cmdline 。。。
    uil330
        21
    uil330  
    OP
       187 天前
    @CRVV 但是现在 scp ,wget 之类的没法用也传不上去了。。。
    iBugOne
        22
    iBugOne  
       187 天前   ❤️ 1
    「把这个储存挂载在其他的 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
        23
    uil330  
    OP
       187 天前
    @iBugOne 现在就按老哥的思路走了
    skiy
        24
    skiy  
       187 天前 via iPhone
    直接在别的机子上传一下“bin”下的二进制文件,用绝对路径运行命令,行不行得通?
    julyclyde
        25
    julyclyde  
       187 天前
    su/sudo 本身+s 权限,如果 chmod 0744 之后,第一位 0 就把 setuid 给去掉了
    leoleoasd
        26
    leoleoasd  
       187 天前
    拷过去的 sudo 也不行,sudo 二进制文件的 owner 必须是 root
    danc
        27
    danc  
       187 天前
    尝试导出数据,重装系统吧
    msg7086
        28
    msg7086  
       187 天前
    重装系统可能是最快的办法。
    wwbfred
        30
    wwbfred  
       187 天前
    他是-R 了么?理论上不-R 不应该这么麻烦啊,直接开台新机子作为数据盘挂上去就行了。
    -R 的话你就得想办法恢复所有权限了,这就十分坑爹了,一个没修好就不知道哪里有坑,建议干脆重装吧。
    wwbfred
        31
    wwbfred  
       187 天前
    实在没法重装可以试试去一台正常的机子下把所有 /usr 下的权限遍历一遍记录下来,再到故障机上恢复相同权限。然后特殊文件和没被处理的文件手动处理。如果你自己的数据没用到复杂的权限管理,我觉得值得一试,也算是没有办法的办法吧。
    Puteulanus
        32
    Puteulanus  
       187 天前
    HUNYXV
        33
    HUNYXV  
       187 天前
    能进救援模式吗?
    ivan_wl
        34
    ivan_wl  
       187 天前
    把正常 /usr 目录下的打个包,mount 到这个机器的 /usr 目录下?
    dangyuluo
        35
    dangyuluo  
       187 天前
    AWS 的话可以尝试用 user data 来修改`/usr`目录里的权限。`user_data`是以 root 执行的。另外 AWS 的 Ubuntu 是有默认启用 root 账户的。
    yzbythesea
        36
    yzbythesea  
       187 天前
    为什么不再开个实例?是因为有持久化数据放在 ec2 上的?
    xiaket
        37
    xiaket  
       187 天前
    我觉得你们对云计算是不是有什么误解, 云计算不是买 VPS 啊同学... 机器应该被当作牲口而不是宠物啊
    AS4694lAS4808
        38
    AS4694lAS4808  
       187 天前
    想问下权限怎么改回去的。。那么多文件
    ha0zi
        39
    ha0zi  
       187 天前
    菜鸟好奇问问,`sudo chmod 744 .` 那么也就是在 `/usr` 这一级目录下无法访问,好奇问问 `/bin` 下的文件不能执行吗?没有尝试过也不想尝试 , 如果加了 `-R` 我敬你是条汉子
    shequ2046
        40
    shequ2046  
       187 天前
    AWS 就是这么麻烦,只能重新挂载,没有其他办法了。
    uil330
        41
    uil330  
    OP
       186 天前
    @ha0zi 不能,因为 /usr 是 root 的,744 的话就只有 root 能执行,哪怕同组都执行不了
    uil330
        42
    uil330  
    OP
       186 天前
    @AS4694lAS4808 因为这个傻子还有人性,没有 -R
    uil330
        43
    uil330  
    OP
       186 天前
    @wwbfred 我其实是被拉过来擦屁股的,对 linux 熟但是对 aws 不太熟。。。昨天看了一个上午 aws 文档最后解决了
    defunct9
        44
    defunct9  
       186 天前
    楼主得结案陈词一下,最后是怎么解决的。否则楼上这么多人都在猜火车啊。
    jasonselin
        45
    jasonselin  
       186 天前
    开机 直接 DD
    uil330
        46
    uil330  
    OP
       184 天前
    @defunct9 在附言里面写了
    AS4694lAS4808
        47
    AS4694lAS4808  
       183 天前
    @uil330 嗨,我就说呢,没开-R 那妥妥的几分钟搞定,他做人留了一线,哈哈
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1581 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 16:54 · PVG 00:54 · LAX 09:54 · JFK 12:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.