2011-11-16 15 views
14

Im scrivendo uno script che dovrebbe fare questo ...Bash: l'esecuzione di comandi da un utente all'interno di chroot e interruttore

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

ho provato questo approccio:

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

Questo cerca di eseguire il commutazione utente e lo script come un comando stringa per bash ... tuttavia ciò che fa, è "ferma" dopo "su -" e non esegue lo script. Tuttavia, una volta lasciato l'ambiente "su -", prova a eseguire startup.sh ma ovviamente non riesce a trovarlo.

Fondamentalmente ho bisogno di nido "startup.sh" per essere eseguito all'interno del "su -" ambiente ...

Tutte le idee?

Grazie mille

risposta

29

provare

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

grazie mille, non so come non ho visto questo nella pagina man! – dgrandes

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

opzione di base:.

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

opzione con shell diversa (ad esempio, se si utilizza bash, ma in ambiente chroot non è così esiste)

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