GNU/Linux >> Linux の 問題 >  >> Linux

ユーザーとして引数を使用してスクリプトを実行しますか?

私は、スクリプトが実行されるときに、スクリプトが実行される前にそのユーザーに訴える必要なしに、特定のユーザーとして実行されることを確認しようとしています。また、スクリプトは、たとえばいくつかのフラグを使用して実行されます

./myscript.sh -e dev -v 1.9

私は次のことを試しました

[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` [email protected]"

しかし、私のスクリプトへの入力であるはずの-vフラグは、suへの入力として供給されています。それで、それは無効なオプションについて不平を言います、上記を修正する方法はありますか?

注意:スクリプトを実行している人にはsudo権限があります。

承認された回答:

現在のユーザーはすでに変数$USERにあります 。したがって、必要なのは次のとおりです。

[ "$USER" = "myuser" ] || sudo -u myuser $0 "[email protected]"

sudo suは必要ありません 、sudo あなたが必要とするすべてを行うことができます。 pwdも必要ありません またはbasename$0 変数にはすでにスクリプトへのフルパスがあります。

元のコマンドはログインシェルを開始していました(su - )。それが本当に必要な場合(奇妙に思えます)、次のことができます:

[ "$USER" = "myuser" ] || sudo -iu myuser $0 "[email protected]"

Linux
  1. Linux – Systemdで30分ごとにスクリプトを実行しますか?

  2. スクリプトを実行する方法??

  3. Bashスクリプトでユーザーアカウントとパスワードを自動的に追加する方法は?

  1. パスワードなしで別のユーザーとしてスクリプトを実行するには?

  2. rc.local でスクリプトを実行します:スクリプトは機能しますが、起動時には機能しません

  3. Ubuntu - sudo を使用して起動時にコマンドを実行する

  1. 時間コマンドでBashスクリプトの実行にかかる時間を確認する

  2. initスクリプトで特定のユーザーとしてコマンドを実行する方法は?

  3. bash.sh で cron を実行する権限が拒否されました