读取/proc/pid/mem而不执行整个python脚本

读取/proc/pid/mem而不执行整个python脚本,python,linux,file,root,Python,Linux,File,Root,我正在通过打开/proc/pid/mem从python脚本读取另一个进程内存: reader = open(f'/proc/{pid}/mem', 'rb') 然后从随机的地方读: reader.seek(address, 0) memory_content = reader.read(length) 一切都很好,但事实上,要打开/proc/pid/mem,我必须完成整个python脚本。当然,为了理智起见,我不想那样做。我有什么选择 如果我理解正确,我无法sudo chmod/proc/

我正在通过打开/proc/pid/mem从python脚本读取另一个进程内存:

reader = open(f'/proc/{pid}/mem', 'rb')
然后从随机的地方读:

reader.seek(address, 0)
memory_content = reader.read(length)
一切都很好,但事实上,要打开/proc/pid/mem,我必须完成整个python脚本。当然,为了理智起见,我不想那样做。我有什么选择

  • 如果我理解正确,我无法
    sudo chmod/proc/pid/mem
    让每个人都能从该进程内存中读取数据(如果我错了,请纠正我)
  • 我无法从非根python脚本中
    打开
    具有根权限的单个文件(再次,如果我错了,请纠正我)
也许我可以创建一些指向/proc/pid/mem的硬链接,它看起来像一个不需要根访问权限就可以读取的文件

或者,最简单的方法可能是创建一个代理程序,该程序将以root权限从实际的python脚本运行,该程序将从/proc/pid/mem读取,我将以某种方式与之进行跨进程交互。

您需要代理

  • 您的硬链接方法不起作用,因为权限保持不变
  • 即使你能让每个人都能读到proc/mem,你能从中得到什么?从安全性的角度来看,最好让整个脚本以root用户身份运行,并希望您的脚本是正确的。这至少有一个变化。通过打开记忆让每个人阅读,你将允许任何人从记忆中获取秘密,让它对所有人都是免费的。所以肯定不是这个

如果您最终执行代理,如果您想在Python中执行代理,您当然需要sudo来运行它,但这会起作用。我已经用C编写了这样的帮助程序,并将它们设置为suid root,但这是一个偏好问题。

权限位于inode本身,所有链接都使用相同的inode。最后描述的代理方法可能是最好的方法。