V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xjx0524
V2EX  ›  问与答

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

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

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

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

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

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

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

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

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

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