我在我的Ubuntu14.04机器中创建了一个chroot监狱,使用schroot和debootstrap。
现在,我想编写一个shell脚本,它在我的本地环境和chroot之间来回运行。
当我在shell脚本中直接编写命令时,当我切换到chroot时,它会阻塞。
例如:
...
sudo chroot /JAIL #folder to chroot
echo "Chrooted now"
...我被切换到chroot文件夹/JAIL但是,我没有在回显输出。只有当我退出色度到主机时,输出才会被打印出来。我推断这可能与当我们进入chroot监狱时用户被更改有关。
所以,我尝试了这个问题中提到的解决方案,如何在单个终端上快速地在用户之间切换?,我也读过关于遗传的文章,但是无法让它们发挥作用。
理想情况下,我想要一个shell脚本,其流如下所示:
发布于 2018-09-06 16:48:05
只需在chroot之后编写命令:
chroot /jail /path/to/some/command <parameters>man chroot第2行:
使用特殊根目录命名chroot运行命令或交互式shell,简要说明选项 NEWROOT [命令ARG.]
发布于 2018-09-06 17:08:09
echo退出后执行sudo的原因与被更改的用户无关。
让我们简化脚本:
...
cat
echo "After cat"
...echo命令将在cat完成后执行,就像您编写的其他命令序列一样。
如果希望在chroot中执行某些命令,则必须将它们作为参数传递给chroot。
如果您使用/bin/bash作为登录shell,则命令
chroot /dir等于
chroot /dir /bin/bash -i这意味着它启动了一个交互式shell。可以通过创建chroot中可访问的shell脚本或在命令行中指定命令来执行某些命令。
chroot /dir /path/to/script
chroot /dir /bin/bash -c 'some commands; more commands'chroot程序总是等待命令完成,尽管脚本或命令行都可以在后台启动进程。
https://unix.stackexchange.com/questions/467327
复制相似问题