sudoはパラメータを使用して他のユーザーとして実行します。

sudoはパラメータを使用して他のユーザーとして実行します。

私は次の(システム)ユーザーmysysuserといくつかのsudoルールを作成し、いくつかのメンテナンスのために他のユーザーのフォルダにいることを確認しました。

スクリプトは他のユーザーとして実行する必要がありますが、一部のパラメーターも必要です。

だから私は次のようにしました。/etc/sudoers.d/mysysuser

例:

Cmnd_Alias FIRST = /usr/bin/su -l user1 -c '/home/*/www/*/deploy.sh "$0" "$1" "$2"' * * *
Cmnd_Alias SECOND = /usr/bin/su -l user2 -c '/home/*/www/*/deploy.sh "$0" "$1" "$2"' * * *
mysysuser ALL=(ALL) NOPASSWD: FIRST,SECOND

次に、次を実行します。

sudo /usr/bin/su -l user1 -c '/home/user1/www/site1/deploy.sh' "param 1" "param 2" "param 3"

うまくいかずにパスワードを求めます。

パラメータのないこのバージョンはうまく機能し、パスワードを要求せずに実行できます。

Cmnd_Alias FIRST = /usr/bin/su -l user1 -c /home/*/www/*/deploy.sh * * *

しかし...スクリプトはパラメータを受け取りませんでした。

sudoersファイルは、ワイルドカードを除いて非常に文字通り入力する必要があることを知っています。 *

なぜ動作しないのか知りたいのは次のとおりです。

“$0” “$1” “$2”

部分?

ドル記号を避けると、人々が吐き出すことにvisudoなります。

修正する:

コメントによると、suコマンドを使用する代わりにsudoを直接使用することをお勧めします。

私はこれを試しましたが、今は動作できません。 sudoはパスワードが必要ないにもかかわらず、パスワードを要求します。

/etc/sudoers.d/mysysuser:

Cmnd_Alias FIRST = /home/*/www/*/deploy.sh "$0" "$1" "$2" * * *
mysysuser ALL=(ALL) NOPASSWD: FIRST

mysysuserで実行したコマンドは次のとおりです。

sudo -u user1 /home/user1/www/site1/deploy.sh "param 1" "param 2" "param 3"

結果:

あなたはあなたのローカルシステム管理者から一般的な講義を聞いたと思います。通常、次の3つに帰結します。

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] mysysuserのパスワード:

ベストアンサー1

実行するには、sudo以下を実行する必要がありますsudo

したがって、コマンドはで始まる必要がありますsudo

suそして一緒に使う必要もありませんsudosudoユーザーとグループを処理できます。誰が何を実行できるかを設定できます。

おすすめ記事