首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一终端的chroot监狱和主机之间来回切换

在同一终端的chroot监狱和主机之间来回切换
EN

Unix & Linux用户
提问于 2018-09-06 16:00:12
回答 2查看 1.6K关注 0票数 0

我在我的Ubuntu14.04机器中创建了一个chroot监狱,使用schroot和debootstrap。

现在,我想编写一个shell脚本,它在我的本地环境和chroot之间来回运行。

当我在shell脚本中直接编写命令时,当我切换到chroot时,它会阻塞。

例如:

代码语言:javascript
复制
...
sudo chroot /JAIL #folder to chroot
echo "Chrooted now"
...

我被切换到chroot文件夹/JAIL但是,我没有在回显输出。只有当我退出色度到主机时,输出才会被打印出来。我推断这可能与当我们进入chroot监狱时用户被更改有关。

所以,我尝试了这个问题中提到的解决方案,如何在单个终端上快速地在用户之间切换?,我也读过关于遗传的文章,但是无法让它们发挥作用。

理想情况下,我想要一个shell脚本,其流如下所示:

  1. 罗特进监狱
  2. 在那里做点什么
  3. 搬回主机
  4. 在这里也做点什么
  5. 回到色度,等等。
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-09-06 16:48:05

只需在chroot之后编写命令:

代码语言:javascript
复制
chroot /jail /path/to/some/command <parameters>

man chroot第2行:

使用特殊根目录命名chroot运行命令或交互式shell,简要说明选项 NEWROOT [命令ARG.]

票数 1
EN

Unix & Linux用户

发布于 2018-09-06 17:08:09

echo退出后执行sudo的原因与被更改的用户无关。

让我们简化脚本:

代码语言:javascript
复制
...
cat
echo "After cat"
...

echo命令将在cat完成后执行,就像您编写的其他命令序列一样。

如果希望在chroot中执行某些命令,则必须将它们作为参数传递给chroot。

如果您使用/bin/bash作为登录shell,则命令

代码语言:javascript
复制
chroot /dir

等于

代码语言:javascript
复制
chroot /dir /bin/bash -i

这意味着它启动了一个交互式shell。可以通过创建chroot中可访问的shell脚本或在命令行中指定命令来执行某些命令。

代码语言:javascript
复制
chroot /dir /path/to/script

chroot /dir /bin/bash -c 'some commands; more commands'

chroot程序总是等待命令完成,尽管脚本或命令行都可以在后台启动进程。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/467327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档