web-dev-qa-db-ja.com

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-」環境内で実行する必要があります...

17
dgrandes

試す

chroot /chroot_dir /bin/bash -c "su - -c ./startup.sh"
chroot /chroot_dir /bin/bash -x <<'EOF'
su -
./startup.sh
EOF
19
garuse

基本オプション:

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

別のシェルでのオプション(たとえば、bashを使用しているが、chrootされた環境には存在しない場合)

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