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

2021-01-06 20:15:26 +08:00
 xjx0524

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

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

3495 次点击
所在节点    问与答
32 条回复
skydiver
2021-01-06 20:18:37 +08:00
进程开着应该文件还没删吧,可以看看进程打开的文件
xjx0524
2021-01-06 20:24:01 +08:00
@skydiver lsof -p pid 试了,并没有我要的文件...不知道还有什么方法吗?
westoy
2021-01-06 20:24:41 +08:00
python 转 opcode 之后原文件的 fd 就释放了, 走 proc 路子应该是恢复不了的

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

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

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

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

本身就是开源的,泄露什么
black11black
2021-01-07 06:22:44 +08:00
@iamwho 你可能借助开源工具,管理你的核心密钥,以及部署需要保护源码的服务等等。
Cooky
2021-01-07 07:34:22 +08:00
赶快把磁盘镜像 dump 出来,用恢复软件找
xjx0524
2021-01-07 10:06:58 +08:00
@lululau 还在的进程是 python xxx.py ,这个的父进程 id 是 1,我用 lsof 看了本身的 pid 和父进程的 pid 都没有这个文件,不知道是不是用法有误...
lean
2021-01-07 10:10:31 +08:00
/proc/进程 id/ 下看下里面的文件内容,记得可以恢复,忘记具体哪个文件了
xjx0524
2021-01-07 10:11:02 +08:00
@CEBBCAT
@black11black
@Cooky
感谢所有回复的各位提供的思路。
文件删除发生在前天,昨天晚上才发现,机器有多人使用和大量的磁盘读写。
内存 dump 比较浪费精力,可能也确实拿不到源码。
这个教训只能自己接受了。。。
keepeye
2021-01-07 10:17:02 +08:00
呃呃呃 难道源码只存在服务器上?平时咋开发呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/742305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX