Web サーバーのユーザーが sudo 権限を必要とするスクリプトをトリガーできるようにするにはどうすればよいですか?

Web サーバーのユーザーが sudo 権限を必要とするスクリプトをトリガーできるようにするにはどうすればよいですか?

lighttpd私の場合、Web サーバーのユーザーに、権限を付与して実行する必要がある特定のスクリプトをトリガーさせることは可能ですかsudo?

lighttpdユーザーが権限を持つスクリプトを 1 つだけトリガーできるようにしたいのですsudo

スクリプト ( と呼ぶことにします) はcreateFolder.sh、共有の上位レベルにテンプレートからフォルダーを作成します。ユーザーには共有の上位レベルへの書き込み権限はありませんが、新しく作成されたフォルダー構造への書き込み権限が必要です。したがって、スクリプトはサブフォルダーに適切な権限を設定し、そこで を使用する必要がsudoあるのです ( chownchmodおよびsetfacl)。

Web インターフェイスを使用する理由は、ユーザーがフォルダー名と正確なフォルダー構造を定義する設定のデータを挿入できるようにするためです。

ユーザーがパスワードなしでを実行できる/etc/sudoersようにするには、エントリを追加するだけで済むと思っていました。次のエラーが表示され、私の考えが間違っていたようです。lighttpdcreateFolder.sh

sudo: mkdir /var/db/sudo/lighttpd を実行できません: 権限が拒否されました

皆さんは、地元のシステム管理者からいつもの講義を受けていると思います。それは通常、次の 3 つの点に要約されます。

1) 他人のプライバシーを尊重してください。2
) 入力する前によく考えてください。3
) 大いなる力には大いなる責任が伴います。

sudo: tty が存在せず、askpass プログラムが指定されていません

スクリプトを常に適切な権限を持つユーザーとして実行するように設定できれば問題は解決しますが、その方法やそれが可能かどうかがわかりません。

ちなみに、私は独学で Linux を学習しましたが、自分の能力に自信はあっても専門家ではないので、常に向上心を持っています。

CentOS 7 ボックスを実行しています。

編集: テキスト ファイルが変更されたときに inotify を使用してスクリプトをトリガーすることで、問題を解決しましたcreateFolder.sh。正しい回答とそのコメントを参照してください。正しい方向を示していただき、ありがとうございます。

答え1

後者が前者に「プッシュ」するのではなく、通常のスクリプトからルート スクリプトを「プル」する必要があります。 例として、次のようになります。

  1. テキストファイルに作成されるフォルダのリストをチェックする cron ジョブを作成します。
  2. lighttpdユーザースクリプトに、そのテキストファイルに目的のフォルダを追加させます。

キューイング/メッセージング システムを使用すると、これをよりエレガントに実行できますが、それはあなた次第です。

関連情報