我有一些我希望在chroot中运行的python代码。代码在没有chroot的情况下工作,我不想在chroot中添加任何特殊的外壳来运行它。我可以调用os.chroot()
,但我不想仅仅因为这一点功能而以root身份运行我的整个程序(我认为没有办法将chroot
称为非root用户)。我也可以将sudo chroot
作为子进程调用然后与它进行通信,但是我无法在我的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
包以实现此目的,但我仍然认为我必须创建一个新的子流程并与之通信,这需要我更改{{1}处理该子进程。我是否可以获得foo
的功能但具有fakechroot
的功能,即正在运行的python程序 chroot而不是仅仅与它进行通信?
我正在使用Arch Linux和Python 2.7。