用python伪造chroot
我想在chroot中运行一些python代码。代码在没有chroot的情况下运行,我不想添加任何特殊的外壳来在chroot中运行它。我可以只调用用python伪造chroot,python,chroot,Python,Chroot,我想在chroot中运行一些python代码。代码在没有chroot的情况下运行,我不想添加任何特殊的外壳来在chroot中运行它。我可以只调用os.chroot(),但我不想为了这一点功能就必须以root用户身份运行整个程序(我认为没有办法以非root用户身份调用chroot)。我也可以将sudochroot作为子进程调用,然后与之通信,但这样我就无法在python代码中调用普通函数;我必须让它们与chroot子流程通信 作为一个例子,下面是我尝试运行的一些代码: import os impo
os.chroot()
,但我不想为了这一点功能就必须以root用户身份运行整个程序(我认为没有办法以非root用户身份调用chroot
)。我也可以将sudochroot
作为子进程调用,然后与之通信,但这样我就无法在python代码中调用普通函数;我必须让它们与chroot
子流程通信
作为一个例子,下面是我尝试运行的一些代码:
import os
import subprocess
def foo():
subprocess.call(['pacman', '-Qe']) # Knowledge of pacman shouldn't be necessary
os.chroot('chroot/root')
foo()
此代码需要root用户。我已经研究了fakeroot
和fakechroot
包来实现这一点,但我仍然认为我必须创建一个新的子流程并与之通信,这需要我更改foo
来处理该子流程。我是否可以获得fakechroot
的功能,但是使用os.chroot()
的特性,运行的python程序就在chroot中,而不仅仅是与它通信
我使用的是Arch Linux和Python 2.7。在C语言中,你将
fork
,孩子将chroot
,然后exec
,而家长等待ed。“我可以调用os.chroot()
,但我不想以root身份运行整个程序。”。所以不要这样;在主目录中创建chroot不需要是root。@JonathonReinhart,对不起,我不知道如何使用它。你能解释一下吗?@JonathonReinhart:你可以用Python做完全相同的事情。@abarnert当我chroot
Ichroot
作为chroot/root
上的root用户时,该目录下的文件权限是root
。