1

更新:問題は私が当初考えていたよりも複雑であることが判明しました。同時に、動作を停止した理由のトラブルシューティングを試みてmkdirいました。これは、テストする親ディレクトリのアクセス許可を手動で変更してから元に戻し、スクリプトにを追加したためです。スクリプトは自分でchmodはなく実行されているため、動作しません。 apache。これをすべて追加すると混乱するので、より大きな問題について新しい質問を投稿します。


私は大学の研究室のインストラクターです。彼らが持っているものは古くてバグがあるので、彼らが割り当てをアップロードするために提供するスクリプトを書き直しています。(Pythonで書かれた)既存のスクリプトを変更する代わりに、私はphpで最初からスクリプトを書いています。

chownが機能していないように見える問題が発生しました。phpスクリプトはユーザーの下で実行されますapache。そのユーザーが「特権」であるかどうかはわかりませんが、元のスクリプトはchownを使用していました。

したがってapache、必要な権限が必要であり、私の問題は他の場所にあると思いますか、それともその論理に欠陥がありますか?


サーバーは大学のものであり、構成を変更する方法はありません。彼らが実行しているのはCentOSだと私は信じています。chmodファイルを作成して権限を変更できることに気付いたばかりのエラーメッセージはありませんがchown、次の行のコマンドは効果がないようです。

ls -al古いスクリプトでは次のように表示されます。

-rwxr-xr-x 1 mattw labstaff 5067 Sep  1 17:52 File_Upload.cgi

setuidビットがオンになっているようには見えません。

Stefanは、「ユーザーapacheには、所有していないファイル/フォルダーをchownするための十分な権限がない可能性が高い」と述べています。私が試みているディレクトリはchown、で作成されたばかりなmkdirので、apacheが所有する必要があります。chownすでにファイルを所有している場合、特権に関係なく機能する必要がありますか?

4

3 に答える 3

2

Apacheにはおそらくそうするための特権がありません。実行している環境によって異なります。apacheはユーザーapacheの下で実行されているとおっしゃっていたので、RHELまたはCentosなどのRHELバリアントであると想定します。

sudoersファイルを(visudoを使用して)編集し、apacheに特定のディレクトリでパスワードなしでsudoを実行する機能を与えることができます。セキュリティを非常に重視している場合は、これは推奨されないことに注意してください。

次のようなものを追加します

apache ALL = NOPASSWD:/ bin / chown 1 [1-9] [0-9] [0-9] \:1 [1-9] [0-9] [0-9] / var / www / [a -zA-Z0-9] *

別のグループにapacheを追加したり、apacheグループなどに別のユーザーを追加して、代わりに0775または0664に変更したりできる場合があります。

エラーをスローしているコード、エラーメッセージ(ある場合)、およびアップロードされているファイルにアクセスする必要があるユーザーとグループを投稿することをお勧めします。

于 2012-01-05T02:22:15.777 に答える
1

古いスクリプトがapacheユーザーによって実行されているが、実行chownできる場合は、setuidビットがオンになっていて、昇格された特権で実行できるようになっている可能性があります。その場合、あなたの仮定は間違っているでしょう。

ls -al /path/to/scriptこれを確認するためにの出力を投稿してください。root所有者として表示さsれ、モードで表示されます。

新しいスクリプトのsetuidモードを有効にするには、chmod u+s それを実行します。これはセキュリティに深刻な影響を与える可能性があることに注意してください。特に、setuidスクリプトまたはバイナリ書き込み可能のままにしないでください。

于 2012-01-05T02:11:50.393 に答える
1

ユーザーapacheには、所有していないファイル/フォルダーをchownするための十分な権限がない可能性があります。apacheにさらに多くの権限を与えることができますが、これはセキュリティ上の問題になる可能性があります。

于 2012-01-05T02:13:03.903 に答える