zhoudaiyu
V2EX  ›  问与答

Linux 如何限制危险操作?

  •  
  •   zhoudaiyu ·
    PRO
    · Jul 31, 2020 via iPhone · 4209 views
    This topic created in 2137 days ago, the information mentioned may be changed or developed.
    昨天有个运维哥们用 root 把一个数据文件给清了,造成了事故。平时值班的时候确实有 root 方便一些,比如变更一些代理配置,排查一些系统问题,普通用户通常权限不够。但是给了 root,而且是跳板机的 root 还是风险很大的。如果是用一台机器的 root 就申请一次,一天可能得申请很多次,领导也顶不住。有没有什么方案能避免这种情况?
    26 replies    2020-08-03 18:08:10 +08:00
    msg7086
        1
    msg7086  
       Jul 31, 2020
    操作之前先过一下脑子就行了。

    什么是危险操作?运维本身就是危险操作。你要防止危险操作,那就得把运维开了。
    Yut
        2
    Yut  
       Jul 31, 2020 via Android
    直接点的话给每个账户上 root 然后限制可以执行的命令完事,毕竟排除蓄意的可能话这样最方便
    但是这个需求会出现说明你们公司的整个运维结构有问题
    love
        3
    love  
       Jul 31, 2020
    二个人一起操作?
    charlie21
        4
    charlie21  
       Jul 31, 2020
    linux 的鉴权机制是很够的阿,你不用
    felixcode
        5
    felixcode  
    PRO
       Jul 31, 2020 via Android
    给普通用户,限制 sudo 权限。
    Reficul
        6
    Reficul  
       Jul 31, 2020
    基于配置的不可变架构,运维的时候不能登陆机器,只能修改目标描述。
    Reficul
        7
    Reficul  
       Jul 31, 2020
    描述变更再配合 Git 的版本管理以及 CodeReview 。
    zhoudaiyu
        8
    zhoudaiyu  
    OP
    PRO
       Jul 31, 2020 via iPhone
    @msg7086 那哥们当时没过脑子
    @Yut 这种除了换 shell 还有别的方式吗
    @love 回家值班的时候没法两人操作啊
    @Reficul 你的意思是通过 HTTP 的方式吗
    @felixcode 这个不错
    beautwill
        9
    beautwill  
       Jul 31, 2020
    首先跳板机不应该有权限登录,可以在办公网络里设置个 ssh 代理,通过代理访问服务器。
    账号的话可以创建一个只读用户和用户组,设置所有的用户都是一个用户组,这样平时只要用这个只读账号就可以查看文件、日志等操作。
    Reficul
        10
    Reficul  
       Jul 31, 2020
    @zhoudaiyu

    就是类似 Kubernetes/NixOS 那种声明方式的描述,只描述目标状态,怎么达到目标状态由代码决定后自动执行。
    zhoudaiyu
        11
    zhoudaiyu  
    OP
    PRO
       Jul 31, 2020 via iPhone
    @Reficul 最好是这样,但是需要开发一段时间
    msg7086
        12
    msg7086  
       Jul 31, 2020
    @zhoudaiyu 那就让他过脑子呗。
    很多事情在不过脑子的情况下都会出事故,所以根本问题是做改动之前要再三确认。
    比如上面说的 Code Review 或者 Over shoulder 都是比较好的办法。
    大家都是人类,总会翻错的,只能靠堆人力来避免一个人脑抽搞挂整个系统。
    当然了,盯着的眼睛越多,效率也越低。速度和安全是不可兼得的。
    你愿意让人回家值班的时候操作生产机,那必然要承受搞挂系统的风险。
    你要限制危险操作,必然就没办法让运维单人及时处理事故。
    msg7086
        13
    msg7086  
       Jul 31, 2020   ❤️ 1
    我司之前客服上客户生产机做复杂操作的时候,就是两个人一起做,他负责敲键盘,我坐在他旁边负责审查他的输入。他提出要做的事,我提出做法,他输入进命令行,我检查完输入后确认执行,然后他敲下回车。
    这样我俩要同时脑抽才会出事故,相对来说几率就低很多。

    要追求极致的话可以去看看飞航座舱管理,是无数鲜血换来的双人三人机组尽可能避免单人脑抽导致坠机的经验,我觉得还是挺有学习意义的。
    ivyliner
        14
    ivyliner  
       Jul 31, 2020
    作为一个资深运维, 特别不喜欢 root 操作东西. 基本上需要的时候采用 sudo.
    业务基本上在业务账号上运行, 基本上 99%的导致都不需要 root 权限.
    另外删东西之前, 一般先 ls 出来, 确定范围再操作.
    最后脑子是个好东西.
    Reficul
        15
    Reficul  
       Jul 31, 2020
    @zhoudaiyu

    嗯,理想情况是这样,但是大多数情况下做不到。但是可以把它当作理想的方向
    handsomeroger
        16
    handsomeroger  
       Jul 31, 2020
    我们是用 jumpserver 做堡垒机,上面设置了一些命令过滤器规则,比如说 rm -rf /* 就禁止任何用户使用 root 也不行
    zdnyp
        17
    zdnyp  
       Jul 31, 2020
    “一天可能得申请很多次” 解决不了问题,就解决提出问题的人
    zhoudaiyu
        18
    zhoudaiyu  
    OP
    PRO
       Jul 31, 2020 via iPhone
    @handsomeroger 其实 rm 都还好 可能能恢复 到是 echo 了就难了
    zhoudaiyu
        19
    zhoudaiyu  
    OP
    PRO
       Jul 31, 2020 via iPhone
    @msg7086 怎么说呢 不想给钱 只能招些基础薄弱的人 但凡有一点基础的 也不会清 dat 文件吧
    cominghome
        20
    cominghome  
       Jul 31, 2020
    做好重要资料备份

    运维不让拿 root 权限有点胡扯(估计只有银行金融会有动力做这种事吧),而且 sudo 并不能解决脑子发昏这个问题
    ceyes
        21
    ceyes  
       Jul 31, 2020 via iPhone
    流程上要有分权和变更管理等措施。
    技术上 Google 有个 zreo touch 的理念,自动化控制服务部署,以避免人为失误,可以参考他的开源书-site reliability engineering
    lxilu
        22
    lxilu  
       Aug 1, 2020 via iPhone
    SELinux
    msg7086
        23
    msg7086  
       Aug 1, 2020
    @zhoudaiyu 钱少没药救。
    放在这个行业还算好的,要出事顶多嫩死几台服务器。
    其他行业,要是上建筑工地啊,或者开卡车啊,都让新手干的话怕不是要出人命了。
    YaakovZiv
        24
    YaakovZiv  
       Aug 1, 2020
    运维为啥要删除那个文件
    运维有权限删除文件吗
    是否能删除文件是谁和运维沟通的,是运维自己说了算吗
    权限管理,要不就上堡垒机监控一下。或者做定时备份,出问题了再倒回。
    Yut
        25
    Yut  
       Aug 1, 2020 via Android
    @zhoudaiyu 为啥要换 shell 呢,在 bash 里就可以给各个 user 限制它能执行的命令啊,比如说 ls 什么的都是有个相当于软链接到一个个程序的,手动配置这个就行了我记得就是每个 user 给个单独的 bin folder 然后只 link 给用的程序就完事了
    byzf
        26
    byzf  
       Aug 3, 2020
    每天要操作的事情都是后台调用脚本, 不开终端.

    以我司的网络环境和公司分配给我的卡壳键盘漂移鼠标和 8G 内存, 很难保证我执行的命令不出问题.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2868 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 06:04 · PVG 14:04 · LAX 23:04 · JFK 02:04
    ♥ Do have faith in what you're doing.