[求助] Linux 上误删了一个 Python 文件,进程还在能恢复代码吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjx0524
V2EX    问与答

[求助] Linux 上误删了一个 Python 文件,进程还在能恢复代码吗?

  •  
  •   xjx0524 2021 年 1 月 6 日 4266 次点击
    这是一个创建于 1838 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来想删除日志文件,但是执行错目录了,把代码删了

    .py .pyc 都没了,但是进程还在运行着,求助各位大佬能恢复吗?

    32 条回复    2021-01-08 12:45:42 +08:00
    skydiver
        1
    skydiver  
       2021 年 1 月 6 日
    进程开着应该文件还没删吧,可以看看进程打开的文件
    xjx0524
        2
    xjx0524  
    OP
       2021 年 1 月 6 日
    @skydiver lsof -p pid 试了,并没有我要的文件...不知道还有什么方法吗?
    westoy
        3
    westoy  
       2021 年 1 月 6 日   4
    python 转 opcode 之后原文件的 fd 就释放了, 走 proc 路子应该是恢复不了的

    得 debugfs + dd 或者用 photorec 之类的程序恢复
    xjx0524
        4
    xjx0524  
    OP
       2021 年 1 月 6 日
    @westoy 凉凉,debugfs 已经看不到那个文件了...
    xxxy
        5
    xxxy  
       2021 年 1 月 6 日
    能不能把内存 dump 出来再逆向?
    lululau
        6
    lululau  
       2021 年 1 月 6 日
    既然 lsof 没有这个文件,那说的“进程还在”是哪个进程还在?难不成说的是执行这个 Python 脚本的进程还在吗。。。
    fox0001
        7
    fox0001  
       2021 年 1 月 6 日
    论版本控制的重要性
    black11black
        8
    black11black  
       2021 年 1 月 6 日 via Android
    大概是 G 了,能这么搞的话操作系统的安全性我觉得非常堪忧,linux 上有无数 py 写的运维软件,如果随便一个什么第三方都能提取。。。只能说以后做好备份。。
    CEBBCAT
        9
    CEBBCAT  
       2021 年 1 月 7 日 via Android
    @black11black 为什么不能 dump 出来呢? root 不可以访问内存吗?我觉得你的回复有点无从根据:“…大概率…我觉得…如果随便一个…只能说”,我想你的这个回复除了搅乱思路之外不能起到正面的帮助

    https://serverfault.com/questions/173999/dump-a-linux-processs-memory-to-file
    CEBBCAT
        10
    CEBBCAT  
       2021 年 1 月 7 日 via Android
    @black11black 可能你的出发点是好的,想尽一份自己的力量,看起来你尝试从经验上来回答这个问题,但是好像你没有遇到过相关的问题。

    我个人建议另一条方向:去搜索这个问题吧
    假如说是自己遇到了这个问题,要如何借助搜索引擎或者书籍的力量呢?
    black11black
        12
    black11black  
       2021 年 1 月 7 日   1
    @CEBBCAT 逻辑堪忧啊兄弟,你钻研的精神我挺认可的,但是阅读理解能力和逻辑能力还需要加强。我从来也没说过 root 不能访问内存,也不知道你从哪句看出来的,显然楼主这篇内容是讨论提取源码,也不知道你看到提取两个字以后怎么联想到不能提取内存,想象力很丰富,显然 root 通过调用可以跨进程提取内存。

    我的逻辑很简单,linux 中大多数通过 python 完成的运维软件,如果随便拿到 root 就会导致源码泄露,会引起包含但不限于密钥泄露、商业代码泄露等在内的各种问题,而 linux 运行依赖庞杂到靠人脑无法管理的程度,限制全部可信(全部可信意思是不存在恶意风险)是不现实的。既然长久以来未听说过类似新闻,那就是不行。
        13
    irytu  
       2021 年 1 月 7 日 via iPhone
    进程地址空间里面存的指令和数据 假设你能 dump 拿到它们 你还得逆向吧?
    iamwho
        14
    iamwho  
       2021 年 1 月 7 日
    @black11black #12

    本身就是开源的,泄露什么
    black11black
        15
    black11black  
       2021 年 1 月 7 日
    @iamwho 你可能借助开源工具,管理你的核心密钥,以及部署需要保护源码的服务等等。
    Cooky
        16
    Cooky  
       2021 年 1 月 7 日 via Android
    赶快把磁盘镜像 dump 出来,用恢复软件找
    xjx0524
        17
    xjx0524  
    OP
       2021 年 1 月 7 日
    @lululau 还在的进程是 python xxx.py ,这个的父进程 id 是 1,我用 lsof 看了本身的 pid 和父进程的 pid 都没有这个文件,不知道是不是用法有误...
    lean
        18
    lean  
       2021 年 1 月 7 日 via Android
    /proc/进程 id/ 下看下里面的文件内容,记得可以恢复,忘记具体哪个文件了
    xjx0524
        19
    xjx0524  
    OP
       2021 年 1 月 7 日
    @CEBBCAT
    @black11black
    @Cooky
    感谢所有回复的各位提供的思路。
    文件删除发生在前天,昨天晚上才发现,机器有多人使用和大量的磁盘读写。
    内存 dump 比较浪费精力,可能也确实拿不到源码。
    这个教训只能自己接受了。。。
    keepeye
        20
    keepeye  
       2021 年 1 月 7 日
    呃呃呃 难道源码只存在服务器上?平时咋开发呢
    Hackerl
        21
    Hackerl  
       2021 年 1 月 7 日
    内存搜索: grep 'source keyword' /proc/$(pid)/map_files -r
    raaaaaar
        22
    raaaaaar  
       2021 年 1 月 7 日 via Android
    这就是个纠正你开发流程的好机会,好好思考为什么会出现这样的问题,下次再出现怎么办。
    而且我也想问,你的代码就只在服务器上吗?难不成你开发都是 ssh 到服务器上么。。
    xjx0524
        23
    xjx0524  
    OP
       2021 年 1 月 7 日
    @lean
    @Hackerl
    没有 map_files 这个文件 or 目录,不过又学到点知识 /proc,感谢
    xjx0524
        24
    xjx0524  
    OP
       2021 年 1 月 7 日
    @keepeye
    @raaaaaar
    平时开发就是直接在服务器上,因为本机到服务器中间还有中控机和跳板机,本机开发完再传过去很麻烦的。
    这次疏忽在于被删的只是个人维护的一个长期运行的脚本,没有做备份和版本控制。。。
    zhuangjia
        25
    zhuangjia  
       2021 年 1 月 7 日
    学到了:论版本控制的重要性
    即便是自己用的脚本,也要做好版本控制
    bbbb
        26
    bbbb  
       2021 年 1 月 7 日 via iPhone
    确实版本控制的重要性,有备份就不慌
    xuboying
        27
    xuboying  
       2021 年 1 月 7 日
    gcore 那个 python 进程,然后 strings core 文件?
    julyclyde
        28
    julyclyde  
       2021 年 1 月 8 日
    @xuboying strings 里肯定不会有你想要的内容
    xuboying
        29
    xuboying  
       2021 年 1 月 8 日
    如果出现异常能看到少量信息
    xuboying
        30
    xuboying  
       2021 年 1 月 8 日
    @julyclyde #28 不知道触发了什么关键字,源代码也不能贴了
    xuboying
        31
    xuboying  
       2021 年 1 月 8 日
    @xuboying #30 如果出现异常能看到少量屏幕打印信息,gcore 里确实没有,奇怪
    xuboying
        32
    xuboying  
       2021 年 1 月 8 日
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4084 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 10:18 PVG 18:18 LAX 02:18 JFK 05:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86