Bash:从chroot内部执行命令并切换用户

时间:2011-11-16 20:05:10

标签: linux bash unix chroot

我正在写一个应该这样做的脚本......

chroot /chroot_dir/ su -
./startup.sh (This should run within the su environment)

我尝试过这种方法:

chroot /chroot_dir /bin/bash -c " su -; ./startup.sh"

这会尝试执行用户切换和脚本作为字符串命令来打击......但是它做了什么,是否“停止”之后     “su - ”并且不执行脚本。 但是,一旦我离开“su - ”环境,它确实尝试运行startup.sh,但当然,它无法找到它。

基本上我需要将“startup.sh”嵌套在“su - ”环境中运行...

有什么想法吗?

非常感谢

3 个答案:

答案 0 :(得分:31)

chroot /chroot_dir /bin/bash -c "su - -c ./startup.sh"

答案 1 :(得分:19)

chroot /chroot_dir /bin/bash -x <<'EOF'
su -
./startup.sh
EOF

答案 2 :(得分:1)

基本选项:

cat << EOF | chroot /chroot_dir 
touch aaaaa
touch bbbbb
EOF

选项与不同的shell(例如,如果使用bash但在chrooted环境中它不存在)

cat << EOF | chroot /chroot_dir /bin/sh
touch aaaaa
touch bbbbb
EOF