PHPはファイルとディレクトリの所有権とアクセス権を変更することができます
質問
私は、サーバー上のいくつかのディレクトリを管理し、簡単なWebアプリケーションを構築したいと思います。私は人々にはchownとchmodを使用するオプションを与えたい。
PHPにこの権限を与えるために最も安全な方法は何ですか?最速のものは、単にルートとしてApacheとPHPを実行しているが、それはスマートなアイデアではないようです。
私がsetuidルートを持っている別のスクリプトを作成していた、と思った..もうひとつ
ありがとうございます。
解決
まあ、それは確かに開始するために、危険なアイデアのように聞こえると私は座ってして実現することがしようとしているものの全体戦略を通じて考えを好むだろう。
危険なのはもちろんのリモートユーザが変更したり、アップロードすることができ、実行可能スクリプトの権限昇格、です。ウェブアプリでのフルのchown / chmodコマンドは、ちょうどページでrootパスワードを貼り付けると同等です。
それが起こる必要があるかを正確には何ですか?
chownコマンドは、機能をラップする必要があります(私たちは願っています)何らかの理由で発生するが、ルートする必要がない場合。私は、ユーザーの要求を取得し、それらをキューに入れ、その後、別のプロセスを持っているのcronでrootとして実行要求が許可されたパラメータに合うかどうかをチェックし、このキューをチェックし、変更を行います(シェル、PHPやPerl、何でもかまいません) 。
他のヒント
一つの方法は、(それがLinuxマシンだと仮定して)あなたのマシン上でsudoを設定することです。須藤はあなたがsudoers.confファイルに記載された制限によって支配上昇したコマンドを、実行することができます。
:TISのようなものを自分のWebサービスが(WWW-データなど)の下で実行しているユーザーのために、特定のディレクトリに必要なコマンドにその使用を制限する厳しいルールを使用して、あなたのPHPスクリプトからコマンドシェルを呼び出しますshell_exec("sudo chmod 777 dirname");
あなたのsudoの設定が出て破壊することは不可能に近いだろうことを保証するために、タイトであることを確認してください。
おそらく、あなたは、PHPのコマンドをご覧ください:chmodコマンド、chownコマンド、chgrpコマンドおよびfileperms
chmod("/somedir/somefile", 0600);