2011-11-16 24 views
14

Im escribir un script que debe hacer esto ...Bash: la ejecución de comandos de un usuario dentro de chroot y el interruptor

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

he intentado este enfoque:

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

Este intenta ejecutar el cambio de usuario y la secuencia de comandos como un comando de cadena para bash ... sin embargo, lo que hace, es "se detiene" después de "su -" y no ejecuta la secuencia de comandos. Sin embargo, una vez que salgo del entorno "su", intenta ejecutar startup.sh, pero por supuesto, no puede encontrarlo.

Básicamente necesito para anidar el "startup.sh" a ejecutar dentro de la "su -" medio ambiente ...

¿Alguna idea?

Muchas gracias

Respuesta

29

tratar

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

muchas gracias, ¡no sé cómo no vi esto en la página de manual! – dgrandes

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

opción básica:.

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

opción diferente con cáscara (por ejemplo, si se usa fiesta, pero en el ambiente chroot no lo hace existe)

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