2011-11-16 23 views
14

Im viết một kịch bản mà nên làm điều này ...Bash: thực hiện lệnh từ bên trong một người sử dụng chroot và chuyển đổi

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

Tôi đã thử phương pháp này:

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

này sẽ cố gắng để thực hiện chuyển đổi người dùng và tập lệnh dưới dạng chuỗi lệnh thành bash ... tuy nhiên nó là gì, "dừng" sau "su -" và không thi hành tập lệnh. Tuy nhiên, một khi tôi rời khỏi môi trường "su -", nó sẽ cố gắng chạy startup.sh nhưng tất nhiên, nó không thể tìm thấy nó.

Về cơ bản tôi cần lồng "startup.sh" để chạy bên trong môi trường "su -" ...

Bất kỳ ý tưởng nào?

Thanks a lot

Trả lời

29

thử

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

cảm ơn rất nhiều, tôi không biết làm thế nào tôi không nhìn thấy điều này trong trang người đàn ông! – dgrandes

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

tùy chọn cơ bản:.

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

tùy chọn với vỏ khác nhau (ví dụ như nếu sử dụng bash nhưng trong môi trường chroot nó không tồn tại)

cat << EOF | chroot /chroot_dir /bin/sh 
touch aaaaa 
touch bbbbb 
EOF 
Các vấn đề liên quan