別のユーザーIDでログインしてコマンドを実行するにはどうすればよいですか?

別のユーザーIDでログインしてコマンドを実行するにはどうすればよいですか?

別のユーザーIDで次のシェルスクリプトを実行しています。ただし、このスクリプトを実行するたびに「sudo su $ {USER_ID}」でスムーズに実行されます。その後、実行を停止しました。スクリプトを介して別のユーザーとしてログインした後にコマンド全体を実行する方法を提案してください。

スクリプトは次のとおりです。

#!/bin/bash

PATCH_FILE=" "
USER_ID=" "
Grp_ID=" "

sudo mv ${PATCH_FILE} /tmp
sudo chown ${USER_ID}:${Grp_ID} /tmp/${PATCH_FILE}
sudo su ${USER_ID}
cd /tmp
unzip ${PATCH_FILE}

答え1

スクリプトは実行を停止せずに指示どおりに実行します。対話型シェルを起動し、シェルは入力を待ちます。ユーザーが指示しない限り、スクリプトから入力を読み取ることはありません。

sudo su ${USER_ID} << EOF
cd /tmp
unzip ${PATCH_FILE}
EOF

これはsudo suほぼ常に不要であることに注意してください。

上記の例は、行を標準入力に渡す一般的な問題を解決します。これは必ずしもお客様の状況に最適なソリューションではない可能性があります。

関連情報