有没有办法在chroot中运行程序,同时仍然可以访问stdin / stdout?
我的第一个尝试是一个shell脚本:
/usr/local/bin/real-app: -------- #!/bin/bash chroot /var/lib/app-root /usr/bin/app $*
然后将其链接到事物期望看到的地方:
ln -s /usr/local/bin/real-app /usr/local/bin/app
但是这里有两个问题。 首先,该程序需要root运行。 我可以处理这个。 但是第二,似乎不再是STDIN / STDOUT的连接,这是父进程期望控制这个应用程序的方式。
有没有办法做到这一点? 我是否需要修改应用程序,以便它自己执行chroot系统调用?
chroot不应该影响在执行时打开的stdin,stdout或任何其他文件描述符。 我不知道你的shell chroot命令是做什么的,但是如果它不closures它们,那么它应该都可以正常工作。
也就是说,如果程序不像打开/ dev / stdout或其他任何东西那样做一些非常愚蠢的事情。