xjx0524
V2EX  ›  问与答

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

  •  
  •   xjx0524 · Jan 6, 2021 · 5045 views
    This topic created in 2130 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

    本身就是开源的,泄露什么
    black11black
    black11black
    Jan 7, 2021
    15
    @iamwho 你可能借助开源工具,管理你的核心密钥,以及部署需要保护源码的服务等等。
    Cooky
    Cooky
    Jan 7, 2021 via Android
    16
    赶快把磁盘镜像 dump 出来,用恢复软件找
    xjx0524
    xjx0524
    OP
    Jan 7, 2021
    17
    @lululau 还在的进程是 python xxx.py ,这个的父进程 id 是 1,我用 lsof 看了本身的 pid 和父进程的 pid 都没有这个文件,不知道是不是用法有误...
    lean
    lean
    Jan 7, 2021 via Android
    18
    /proc/进程 id/ 下看下里面的文件内容,记得可以恢复,忘记具体哪个文件了
    xjx0524
    xjx0524
    OP
    Jan 7, 2021
    19
    @CEBBCAT
    @black11black
    @Cooky
    感谢所有回复的各位提供的思路。
    文件删除发生在前天,昨天晚上才发现,机器有多人使用和大量的磁盘读写。
    内存 dump 比较浪费精力,可能也确实拿不到源码。
    这个教训只能自己接受了。。。
    keepeye
    keepeye
    Jan 7, 2021
    20
    呃呃呃 难道源码只存在服务器上?平时咋开发呢
    Hackerl
    Hackerl
    Jan 7, 2021
    21
    内存搜索: grep 'source keyword' /proc/$(pid)/map_files -r
    raaaaaar
    raaaaaar
    Jan 7, 2021 via Android
    22
    这就是个纠正你开发流程的好机会,好好思考为什么会出现这样的问题,下次再出现怎么办。
    而且我也想问,你的代码就只在服务器上吗?难不成你开发都是 ssh 到服务器上么。。
    xjx0524
    xjx0524
    OP
    Jan 7, 2021
    23
    @lean
    @Hackerl
    没有 map_files 这个文件 or 目录,不过又学到点知识 /proc,感谢🙏
    xjx0524
    xjx0524
    OP
    Jan 7, 2021
    24
    @keepeye
    @raaaaaar
    平时开发就是直接在服务器上,因为本机到服务器中间还有中控机和跳板机,本机开发完再传过去很麻烦的。
    这次疏忽在于被删的只是个人维护的一个长期运行的脚本,没有做备份和版本控制。。。
    zhuangjia
    zhuangjia
    Jan 7, 2021
    25
    学到了:论版本控制的重要性
    即便是自己用的脚本,也要做好版本控制
    bbbb
    bbbb
    Jan 7, 2021 via iPhone
    26
    确实版本控制的重要性,有备份就不慌
    xuboying
    xuboying
    Jan 7, 2021
    27
    gcore 那个 python 进程,然后 strings core 文件?
    julyclyde
    julyclyde
    Jan 8, 2021
    28
    @xuboying strings 里肯定不会有你想要的内容
    xuboying
    xuboying
    Jan 8, 2021
    29
    如果出现异常能看到少量信息
    xuboying
    xuboying
    Jan 8, 2021
    30
    @julyclyde #28 不知道触发了什么关键字,源代码也不能贴了
    xuboying
    xuboying
    Jan 8, 2021
    31
    @xuboying #30 如果出现异常能看到少量屏幕打印信息,gcore 里确实没有,奇怪
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1799 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 09:47 · PVG 17:47 · LAX 01:47 · JFK 04:47
    ♥ Do have faith in what you're doing.