Bash: выполнение команд из chroot и переключение пользователя

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

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" для запуска в среду "su -" ...


person dgrandes    schedule 16.11.2011    source источник


Ответы (3)


пытаться

chroot /chroot_dir /bin/bash -c "su - -c ./startup.sh"
person Michael Krelin - hacker    schedule 16.11.2011
comment
Большое спасибо, я не знаю, как я не увидел этого на странице руководства! - person dgrandes; 17.11.2011

базовый вариант:

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

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

cat << EOF | chroot /chroot_dir /bin/sh
touch aaaaa
touch bbbbb
EOF
person Marek Lisiecki    schedule 22.08.2017

person    schedule
comment
Хороший синтаксис. - person Smar; 21.07.2020