假设我试图从目录中的库中执行一些代码,让我们称之为/home/user/project。在巴什会是这样的:
cd /home/user/project
python -c "from MyLib import DoSth; var = DoSth(); print(var)"现在我的确切情况更复杂了。我的Python代码(包括所有已安装的库)位于chroot监狱中。我在监狱外面执行代码。我尝试了以下几点:
cd /home/user/project
sudo -- chroot $CHROOT_DIR python3 -c "from MyLib import DoSth; var = DoSth(); print(var)"这些指纹:
ModuleNotFoundError:没有名为“MyLib”的模块
这是因为监狱中的当前目录只是/,因为前面的cd语句没有在监狱中执行。当我这样做的时候:
sudo -- chroot $CHROOT_DIR cd /home/user/project; python3 -c "from MyLib import DoSth; var = DoSth(); print(var)"我得到了这个错误:
chroot:未能运行命令‘cd’:没有这样的文件或目录
有没有一种不用改变监狱目录就可以使用这个库的方法?或者至少帮我找个办法改变监狱里的目录。
编辑:
我想要做的是与suggested question完全相反。我正在尝试从监狱外执行代码(完全在监狱内)。代码在监狱里运行得很好,但不是从外部运行的。/home/user/project是监狱里的一个目录。
发布于 2021-05-18 17:32:01
我通过运行一个包含我需要的所有命令的脚本来做到这一点,而不是运行单独的命令,因为cd总是无法在chroot上运行(即使目录在监狱中)。以下是命令:
sudo -- chroot $CHROOT_DIR /bin/bash /home/user/myscript在myscript中:
cd /home/user/project
python3 -c "from MyLib import DoSth; var = DoSth(); print(var)"https://stackoverflow.com/questions/67477897
复制相似问题