2012-01-05 5 views
1

更新:問題は私が元々考えていたより複雑です。同時にmkdirが動作を停止した理由をトラブルシューティングしようとしていました。それは、親ディレクトリのアクセス許可を手動で変更してからテストし、chmodapache私自身ではない。私はこの問題をすべて混乱させてしまうと思うので、大きな問題で新しい質問を投稿していきます。スクリプトでチャット


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

私はchownが動作していないように見える問題を発見しました。 PHPスクリプトはユーザapacheの下で実行されます。そのユーザーが「有権者」かどうかは分からないが、元のスクリプトはchownを使用していた。

私はそのためapacheが必要な権限を持っているし、私の問題は、他の場所であるか、その障害が発生した論理であることをすべきであると仮定することはできますか?


サーバーは大学のものであり、設定を変更する方法はありません。私は彼らが走っているCentOSだと信じています。エラーメッセージは表示されません。私はchmodファイルを変更してアクセス権を変更できますが、次の行のchownコマンドは無効と思われます。古いスクリプトの

ls -alが表示さ:setuidビットがオンになっているよう

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

は見えません。

Stefanは「ユーザーのApacheには、所有していないファイル/フォルダをchownするのに十分な権限がありません。 chownに接続しようとしていたディレクトリは、mkdirで作成されたので、Apacheが所有する必要があります。既にファイルを所有している場合は、特典に関係なくchownを使用する必要がありますか?

答えて

2

Apacheにはおそらく権限がありません。それはあなたが実行している環境に依存します。あなたは、ApacheがユーザーのApacheの下で動作していると言いましたので、RHELかCentOSのようなRHELの変種だと仮定します。

sudoersファイル(visudoを使用)を編集して、特定のディレクトリの下でパスワードなしでsudoを実行できるようにします。あなたが非常にセキュリティを意識しているなら、これはお勧めできません。

追加

apacheのような何かALL = NOPASSWD:/ binに/ chownを1 [1-9] [0-9] [0-9] \:1 [1-9] [0-9] [あなたは別のグループに別のユーザーを追加することも、別のユーザーをApacheグループに追加することもできますし、それをchmoddingすることもできます0775または0664に変更してください。

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

1

古いスクリプトはapacheのユーザーが実行したが、それはそれは特権で実行できるようにするにsetuidビットを有することができるchownを実行することができるされている場合。その場合、あなたの前提は間違っています。

これを確認するにはls -al /path/to/scriptの出力を投稿してください。その所有者はroot、モードはsである必要があります。

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

1

ユーザーapacheのが最も可能性が高いそれは所有していないファイル/フォルダをchownコマンドへの十分な権限を持っていない、あなたは、Apacheに、これはセキュリティ上の問題になる可能性がより多くの権限を与えることができます。