Bash: выполнение команд внутри chroot и переключение пользователя - PullRequest
17 голосов
/ 17 ноября 2011

Я пишу сценарий, который должен сделать это ...

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

Я попробовал этот подход:

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

Это пытается выполнить переключение пользователя и сценарий какСтроковая команда для bash ... однако, что она делает, это "останавливается" после "su -" и не выполняет сценарий.Однако, как только я покидаю среду "su -", он пытается запустить startup.sh, но, конечно, он не может его найти.

По сути, мне нужно вложить файл "startup.sh" для запуска внутриокружение "су -" ...

Есть идеи?

Большое спасибо

Ответы [ 3 ]

31 голосов
/ 17 ноября 2011

1001 * попробовать *

chroot /chroot_dir /bin/bash -c "su - -c ./startup.sh"
19 голосов
/ 28 марта 2013
chroot /chroot_dir /bin/bash -x <<'EOF'
su -
./startup.sh
EOF
2 голосов
/ 22 августа 2017

базовая опция:

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

опция с другой оболочкой (например, если используется bash, но в среде chrooted она не существует)

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