0

誰かがPHP(実績があり成功している)を使用してWebブラウザを介してディレクトリをCHMODしたことがありますか?

私の障害は次のとおりです。(a)PHPスクリプトはブラウザから「nobody」として実行されます(b)CHMODが必要なディレクトリの上のディレクトリはftpユーザーが所有し、「nobody」には書き込み権限がありません

したがって、chmod 0666 / usr / www / dirOwnedbyFTPuser / dirIamTryingToCHMOD /を実行しようとすると、アクセスが拒否されます

これを行うためのスクリプトを作成して正常に実行したことがある場合は、コードの概要を私と共有できますか?ありがとう...何ヶ月もこれにいました。

4

3 に答える 3

1

はい、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権限を与えるという考えは好きではありません!!!

お役に立てれば!

于 2010-03-10T14:23:28.447 に答える
1

はい、Web ブラウザー経由で php から chmod できます。(はい、私たちは皆、それが悪い考えである可能性があることを知っています)..

しかし - chmod できるのは、php スクリプトが使用許可を持っているファイルだけです! Web サーバーが無人で PHP を実行している場合、「無人」が所有するファイルを chmod できます...

于 2010-03-10T13:52:51.703 に答える
0

http://www.php.net/ftp php を ftp ユーザーとしてログインさせて実行することができます。

于 2010-03-10T16:10:25.447 に答える