サーバー上のディレクトリを管理する単純な Web アプリを構築したいと考えています。chown と chmod を使用するオプションを人々に提供したいと考えています。
PHPにこの許可を与える最も安全な方法は何ですか? 最も速いのは、Apache と PHP をルートとして実行することですが、それは賢い考えではないようです。
私が考えたもう1つのことは、setuid rootを持つ別のスクリプトを作成することでした..
ありがとう!
確かに、最初は危険なアイデアのように聞こえますが、私は座って、達成しようとしている戦略全体について考えたいと思います。
もちろん、リモートユーザーが変更またはアップロードできる実行可能スクリプトの権限昇格が危険です。Web アプリで完全な chown/chmod を実行することは、ルート パスワードをページに貼り付けるだけのことと同じです。
何が起こる必要があるのか 、それは正確には何ですか?
chown が何らかの理由で発生する必要があるが、root ではない (希望する) 場合は、機能をラップする必要があります。ユーザーのリクエストを受け取り、それらをキューに入れ、別のプロセス (シェル、php、perl など) をルートとして実行し、cron でこのキューをチェックし、リクエストが許可されたパラメーターに適合するかどうかを確認し、変更を行います。 .
1 つの方法は、マシンに sudo をセットアップすることです (Linux ボックスであると仮定します)。sudo を使用すると、sudoers.conf ファイルで設定された制限によって管理される昇格されたコマンドを実行できます。厳しい規則を使用して、Web サービスが実行されているユーザー (www-data など) の特定のディレクトリで必要なコマンドに使用を制限し、PHP スクリプトから次のようにコマンド シェルを呼び出します。
shell_exec("sudo chmod 777 dirname");
sudo 構成がタイトであることを確認して、ブレイクアウトが不可能に近いことを確認してください。