19

Im writing a script that should do this...

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

I have tried this approach:

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

This tries to execute the user switching and the script as a string command to bash...however what it does, is it "stops" after "su -" and doesnt execute the script. However, once I leave the "su -" environment, it does try to run startup.sh but of course, it cant find it.

Basically I need to nest the "startup.sh" to be run inside the "su -" environment...

S.S. Anne
  • 15,171
  • 8
  • 38
  • 76
dgrandes
  • 1,187
  • 2
  • 14
  • 28

3 Answers3

42

try

chroot /chroot_dir /bin/bash -c "su - -c ./startup.sh"
Michael Krelin - hacker
  • 138,757
  • 24
  • 193
  • 173
28
chroot /chroot_dir /bin/bash -x <<'EOF'
su -
./startup.sh
EOF
garuse
  • 381
  • 3
  • 2
7

basic option:

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

option with different shell (eg. if using bash but in chrooted enviroment it doesn't exists)

cat << EOF | chroot /chroot_dir /bin/sh
touch aaaaa
touch bbbbb
EOF
Marek Lisiecki
  • 498
  • 6
  • 10