V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
KomiSans
V2EX  ›  程序员

关于 fish shell 的一个误操作坑

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

    之前发现 fish bash 交互做的挺不错的然后打算用段时间,装完了后 chsh 改默认 shell,结果另一个员工把 fish 给卸了导致 root 用户无法进行 SSH 远程登录,后来经过一晚上的折腾进入 centOS 的安全模式后新增用户并赋予管理员权限才缓解过来...,有惊无险的一个 8 月 13 日晚上,主要是当时主机上有 Jira Software 而且开发商务什么的都还在用着

    48 条回复    2021-08-31 01:17:13 +08:00
    also24
        1
    also24  
       101 天前
    尝试着理解了一下,这里的关键『误操作』是『另一个员工把 fish 给卸了』 是么?
    KomiSans
        2
    KomiSans  
    OP
       101 天前
    @also24 绑定后卸载
    also24
        3
    also24  
       101 天前
    @KomiSans #2
    我大致搜索了一下,似乎不需要新增用户,应该只需要进入恢复模式修改 /etc/passwd 就可以。

    参考:
    https://www.logcg.com/archives/3003.html
    KomiSans
        4
    KomiSans  
    OP
       101 天前
    @also24 当时为了赶快恢复暂时增加了个临时用户并赋予权限
    jdhao
        5
    jdhao  
       101 天前 via Android   ❤️ 2
    你用 root 用户装的 fish shell? 那的确是作死了
    jdhao
        6
    jdhao  
       101 天前 via Android
    @jdhao 另外你们都没有权限控制吗?所有用户都用一个 root 登陆?
    KomiSans
        7
    KomiSans  
    OP
       101 天前
    @jdhao chsh 害人不浅
    KomiSans
        8
    KomiSans  
    OP
       101 天前
    @jdhao 小公司嘛,不注重这个
    KomiSans
        9
    KomiSans  
    OP
       101 天前
    @also24 文章不错,受教了
    heyjei
        10
    heyjei  
       101 天前   ❤️ 3
    你这标题起的不对,这个和 chsh,还有 fish shell 真的没有什么关系,不是 chsh 害人不浅,是 root 敢死队害人不浅。建议标题改成“root 敢死队的误操作坑”
    KomiSans
        11
    KomiSans  
    OP
       101 天前
    @heyjei 所以就应该和 samba 服务器设置多用户才对
    wangxn
        12
    wangxn  
       101 天前
    我觉得关键是为啥会把一个公用账户的 default shell 改掉?而且还是 root 。
    fish 魔改了很多东西,别人未必用得惯。
    KomiSans
        13
    KomiSans  
    OP
       101 天前
    @KomiSans 只能怪我手欠
    ulosggs
        14
    ulosggs  
       101 天前
    所有人都能用 root. 真牛皮
    KomiSans
        15
    KomiSans  
    OP
       101 天前
    @ulosggs 毕竟内部测试机,小公司嘛,没啥规范
    shuimugan
        16
    shuimugan  
       101 天前
    经历过一次类似的,测试机默认 shell 不知道被谁改成了 zsh,然后 ssh 登不上了.幸好跑了一个 portainer,通过 web 界面启动个容器把 /etc 和 /root 挂进去分析出来问题,改好之后就好了.
    KomiSans
        17
    KomiSans  
    OP
       101 天前
    @shuimugan 所以最好是自己用自己的不要随便绑定默认 shell
    CEBBCAT
        18
    CEBBCAT  
       101 天前   ❤️ 3
    这跟 fish 毫无关系吧,第一个是猪队友为什么删一个 shell,第二个是为什么改公有账号的 shell,关键是它和 bash 不完全兼容啊

    隔天了还认为原因出在 chsh 上,我只能说你真的需要关注你的睡眠状况了

    相关:fish 用户
    KomiSans
        19
    KomiSans  
    OP
       101 天前
    @CEBBCAT 本来就不应该绑定的不是么,更何况单用户
    Kobayashi
        20
    Kobayashi  
       101 天前
    这和 shell 、chsh 有个毛线关系。你们自己操作不规范怪谁。
    KomiSans
        21
    KomiSans  
    OP
       101 天前
    @Kobayashi 没听懂什么是误操作么
    liaojl
        22
    liaojl  
       101 天前
    你这标题很容易让人以为是 fish 的坑,实际上这和 fish 一毛钱关系都没有,你换成 zsh 一样会有这个问题。
    KomiSans
        23
    KomiSans  
    OP
       101 天前
    @liaojl
    KomiSans
        24
    KomiSans  
    OP
       101 天前
    最可笑的是我的同事认为 fish 是流氓软件...
    ooops
        25
    ooops  
       101 天前 via Android
    说到底还是楼主的问题。。。给服务器换小众 shell
    KomiSans
        26
    KomiSans  
    OP
       101 天前
    @ooops 我的锅,也有公司从不分配用户的烂习惯
    hei1000
        27
    hei1000  
       101 天前 via Android
    @KomiSans #24 很明显,这个同事被招进来才是误操作
    Veneris
        28
    Veneris  
       101 天前
    不要给 root 用户换 shell,建立自己的用户换
    hxsf
        29
    hxsf  
       101 天前 via iPhone   ❤️ 2
    ssh xxxx 后面可以接命令的....
    KomiSans
        30
    KomiSans  
    OP
       101 天前   ❤️ 1
    @hxsf ssh [email protected] -t /bin/bash
    zoharSoul
        31
    zoharSoul  
       101 天前
    @ooops #25 fish 不算小众吧...
    noyidoit
        32
    noyidoit  
       101 天前
    @zoharSoul 感觉 bash>>>>zsh>fish
    msg7086
        33
    msg7086  
       100 天前
    这个是真的不应该,ssh 的时候直接调用 bash 就行了,又不是非得启动默认 Shell 。
    KomiSans
        34
    KomiSans  
    OP
       100 天前 via Android
    @msg7086 也是,没必要系统里改
    shilianmlxg
        35
    shilianmlxg  
       100 天前 via iPhone
    @noyidoit 大佬。bash 能装自动补全之类的插件嘛
    Varobjs
        36
    Varobjs  
       100 天前
    大家一起用的服务器就不要装 fish zsh,各种主题了,
    你习惯不代表别人习惯的。
    justrand
        37
    justrand  
       100 天前
    我就想问问,线上服务器你们也可以安装 fish OR zsh ?
    snuglove
        38
    snuglove  
       100 天前
    登录主要是 passwd 文件里边指定的 root 登录 shell,跟卸载不卸载没关系的.
    看你的描述是装了 chsh 没有改成默认 shell 导致的,因为还是默认 fish,卸载之后导致 root 没有默认 shell,所以无法登陆
    boris93
        39
    boris93  
       100 天前 via iPhone
    @KomiSans #15 一个用于内部测试的机器,上面跑着面向生产的 JIRA ?
    先把 root 敢死队改了,不然迟早出大事。服务器上也老老实实就用 bash,至少别动 root 的 shell,你自己的账号随便玩
    cctrv
        40
    cctrv  
       100 天前
    沒有 VNC 的連結模式嗎?
    只依賴 SSH 然後把 SSH 弄沒了。也沒 VNC 的話,只能去機房處理了。

    然後各大雲服務器都有一個 VNC 的模式,相當於真實機器的終端。
    KomiSans
        41
    KomiSans  
    OP
       100 天前
    @cctrv @boris93 受教了
    cmdOptionKana
        42
    cmdOptionKana  
       100 天前 via Android
    不是大公司小公司的区别,就算自己一个人用,也不该直接用 root
    KomiSans
        43
    KomiSans  
    OP
       100 天前
    @cmdOptionKana 说白了,多用户就行,root 不 root 无所谓
    tomychen
        44
    tomychen  
       100 天前
    这个问题关 fish shell 什么事?
    默认的 bash 你的另一个员工给卸了,不也一样会导致这样的问题?
    KomiSans
        45
    KomiSans  
    OP
       100 天前
    都太爱杠...
    KomiSans
        46
    KomiSans  
    OP
       100 天前
    @cctrv 话说用 VNC 的话还需要图形化界面什么的,有点占资源
    2i2Re2PLMaDnghL
        47
    2i2Re2PLMaDnghL  
       100 天前   ❤️ 1
    @KomiSans VNC 不需要图形化界面,可以传递伪终端的。

    1. root 应避免日常使用,并彻底禁止远程登录
    2. 生产服务器安装卸载和配置变更均应进行控制甚至审批(虽然 V2 不少人抱怨这茬)
    3. 包管理器里可以查询这个软件是啥——不要跟我说是直接 rm 的……
    4. ssh 命令可以带命令行,不一定要使用默认 shell

    这里面哪怕少出半个错都搞不出这种事儿。
    2i2Re2PLMaDnghL
        48
    2i2Re2PLMaDnghL  
       100 天前
    不过说起来,不存在一个 shell 读取本地配置而在远端或其他用户执行的吗?
    我可以在本地配置一堆风骚的配置,包括各种 alias 、fzf 替换 ^R,ESC ESC 会调用 thefuck 之类的
    enter root 之后,所有的操作都是 sudo 执行的
    enter [email protected]_host 之后,所有实际操作都是 ssh [email protected]_host -t 执行的
    甚至是 pushe pope 这样的
    这样一种将前端(用户界面)和后端(执行器)解耦的 shell,有没有搞头?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1165 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:28 · PVG 03:28 · LAX 11:28 · JFK 14:28
    ♥ Do have faith in what you're doing.