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

dgr*_*des 17 unix linux bash chroot

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

chroot /chroot_dir/ su -
./startup.sh (This should run within the su environment)
Run Code Online (Sandbox Code Playgroud)

我试过这种方法:

chroot /chroot_dir /bin/bash -c " su -; ./startup.sh"
Run Code Online (Sandbox Code Playgroud)

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

基本上我需要嵌套"startup.sh"才能在"su - "环境中运行...

有任何想法吗?

非常感谢

Mic*_*ker 31

尝试

chroot /chroot_dir /bin/bash -c "su - -c ./startup.sh"
Run Code Online (Sandbox Code Playgroud)


小智 19

chroot /chroot_dir /bin/bash -x <<'EOF'
su -
./startup.sh
EOF
Run Code Online (Sandbox Code Playgroud)


Mar*_*cki 9

基本选项:

cat << EOF | chroot /chroot_dir 
touch aaaaa
touch bbbbb
EOF
Run Code Online (Sandbox Code Playgroud)

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

cat << EOF | chroot /chroot_dir /bin/sh
touch aaaaa
touch bbbbb
EOF
Run Code Online (Sandbox Code Playgroud)