パラメータを使用してユーザーとしてスクリプトを実行する

パラメータを使用してユーザーとしてスクリプトを実行する

私は、スクリプトを実行するときにスクリプトを実行する前に、そのユーザーに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 "$@"

おすすめ記事