Web リクエストから呼び出す必要のあるスクリプトがいくつか含まれたディレクトリがあります。スクリプトを実行するには、昇格された権限が必要です。
現在考えているのは、 に次の行を追加することです/etc/sudoers
。
Cmnd_Alias WEB_COMMANDS = /path/to/scripts
www-data ALL=(ALL) NOPASSWD: WEB_COMMANDS
これはこの問題に対する正しいアプローチでしょうか? それとも、潜在的なセキュリティの脆弱性を引き起こしているのでしょうか?
CentOS 7 を使用すると、何か違いが出るかもしれません。
答え1
あらゆるものが潜在的なセキュリティの脆弱性となります。次の 2 つが考えられます。
まず、あなたはもちろんルートが必要ですか? なぜですか? 代わりに、capabilities を使用してこれを行うことはできますか? (おそらくできます。)
そうは言っても、あなたの例はほぼ正確です。パスの後にアスタリスクを追加します。
Cmnd_Alias WEB_COMMANDS = /path/to/scripts/*
これで、動作するようになります。ただし、これらのスクリプトのいずれかが攻撃者によって変更された場合、攻撃者は完全なルートアクセス. 簡単にシェルを持つことができますexec('/bin/bash')
。可能であればスクリプトごとに機能ルートを確実に選択し、いずれにしてもスクリプトディレクトリを確実にロックダウンしてください。この unix.se の回答スクリプトを使用して機能を管理する方法については、こちらをご覧ください。