私は次の(システム)ユーザー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
そして一緒に使う必要もありませんsudo
。sudo
ユーザーとグループを処理できます。誰が何を実行できるかを設定できます。