私は、スクリプトを実行するときにスクリプトを実行する前に、そのユーザーにsuを要求せずに特定のユーザーとして実行するように努めています。スクリプトは、次のようないくつかのフラグで実行されます。
./myscript.sh -e dev -v 1.9
私は次を試しました
[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` $@"
しかし、-vフラグは私のスクリプトに入力する必要がありますが、suへの入力として使用されています。だから、間違ったオプションについて文句を言う。上記の問題を解決する方法はありますか?
注:スクリプトを実行している人にはsudo権限があります。
ベストアンサー1
現在、ユーザーはすでに変数にあります$USER
。したがって、必要なものは次のとおりです。
[ "$USER" = "myuser" ] || sudo -u myuser $0 "$@"
不要の場合は、sudo su
必要なsudo
操作をすべて実行できます。必要ないか、pwd
変数basename
には$0
すでにスクリプトへのフルパスがあります。
元のコマンドはログインシェル(su -
)を起動することでした。本当に必要な場合(不思議ですが)、次のようにできます。
[ "$USER" = "myuser" ] || sudo -iu myuser $0 "$@"