はい、phpを介してこれを行うことは可能です。ただし、通常のlinuxパーミッションルールが適用されるため、apacheユーザー(nobody)が所有していないchmodスクリプトを探していて、apacheユーザーに書き込みパーミッションがない場合、1つの方法はapacheにsudoを使用するパーミッションを与えることです。
注意してください-これは潜在的に巨大なセキュリティホールです!!!
sudoersファイルを編集することにより、apacheにsudoの使用を許可することができます。このファイルを直接編集しないことをお勧めします。エラーが発生すると、完全に失敗する可能性があるため、私が入力した(Ubuntu)システムでは
sudo visudo
次に、「nobody」ユーザーの行を追加する必要があります。sudoのアクセス許可を特定のスクリプトまたはフォルダーに制限できるため、アクセス許可を変更するシェルスクリプトを作成し、これを他のスクリプトから離れたフォルダーに配置することをお勧めします。そうすれば、apacheはシステムに対する完全なroot権限を持ちません(これはかなり恐ろしい考えです)。シェルスクリプトにコードを入れて、変更できるファイルを制限することもできます。
また、phpを介してパスワードを入力する方法がないため、apacheがパスワードなしでsudoを実行できるようにする必要があります。したがって、追加する行は次のようになります。
nobody ALL=(ALL)NOPASSWD:/path/to/my/script
次に、phpでコマンドの前にsudoを付けるだけです
passthru ("sudo /path/to/my/script ...");
(passthru()の代わりに使用できる関数が他にもいくつかありますが、最初に頭に浮かんだのはこれだけです)
前に述べたように、これは潜在的に非常に危険であり、上記は機能しますが、私はこれまで自分のプライベートシステムでのみ使用し、パブリックプロダクションサーバーでは使用していません。多くの人がこれのセキュリティについてコメントするだろうと確信しているので、この方法で他にどのような潜在的な落とし穴やセキュリティホールがあり得るかを聞いてみたいと思います。SuExecを使用して同様のことができることは知っていますが、あまり詳しくないので、この方法についてSuExecの長所または短所があれば、ぜひ聞いてみてください。
最後の注意:apacheユーザーをnobodyから'apache'や'www'のようなものに変更します-おそらくばかげているだけですが、nobodyというユーザーにroot権限を与えるという考えは好きではありません!!!
お役に立てれば!