0

動作していたファイル アップロード JSP を取得しましたが、現在は動作していません。サーバーの入れ替えとソフトウェアの更新(tomcat5からtomcat6など)を行った後、現在は機能していません。コードは次のとおりです。

FileOutputStream fileOut = new FileOutputStream(savePathFile);
fileOut.write(dataBytes, startPos, (endPos - startPos));

ファイルは 1 行目の new FileOutputStream(…) (ファイルサイズは 0) で作成されますが、2 行目の .write で例外がスローされます。ファイルの所有者/グループは tomcat/tomcat です。

したがって、Tomcat には適切な権限が必要です。
また、Tomcat Java アクセス許可ポリシー (catalina.policy) を調べて、正しい FilePermissions があるかどうかを確認しました。それらはそこになかったので、追加しました:

grant codeBase "file:${catalina.home}/webapps/myapp/-" {
permission java.io.FilePermission "/var/lib/tomcat6/webapps/myapp/photographs", "read, write";
}

しかし、違いはありませんでした。次に、セキュリティオプションを有効にしてTomcatが起動されていないと言われました。

tomcat6.conf:SECURITY_MANAGER="false"

他にどこを見ればいいのかわからない。明確な質問がいくつかあります。

ユーザー tomcat がこのディレクトリに対して実際に持っている権限 (rwx) を確認するにはどうすればよいですか?

セキュリティ オプションを有効にして tomcat が実行されているかどうかを確認するにはどうすればよいですか?

許可については、次のように読む必要があります。

grant codeBase "file:${catalina.home}/webapps/myapp/admin/-" {

upload.jsp ファイルは webapps/myapp/admin ディレクトリにあるので?

助けてくれてありがとう、フランク

4

2 に答える 2

0

これはあなたの質問には答えませんが、まったく異なる方向を指しています (アーキテクチャに関して):

ファイルを Web アプリケーションに直接アップロードすることはお勧めできません。いくつかの理由で:

  • アプリケーションが「展開」されていない可能性があるため、ファイルシステムに解凍されていない純粋な WAR ファイルに存在します。したがって、書き込むディレクトリはありません
  • 脆弱性をチェックする必要があります。そうでなければ、悪意のあるファイルをサーバーにアップロードするのは簡単ですadministration.jsp。アップロードされるファイルを想像してみてください。Tomcat は喜んでそれをサーバー側でコンパイル/実行します (これはまさにあなたが求めているものかもしれませんが、「写真」フォルダーは、別の場所に保存し、ダウンロード サーブレットによって提供されるイメージ リソースであることを示唆しています。静的リソースとして提供されているかのようにパスを表示する
  • 更新時には、Web アプリケーションにはおそらく一度デプロイしたものとは異なるコンテンツ (アップロードされたすべてのリソースなど) が含まれていることを覚えておく必要があります。他の誰かがトラブルシューティングのために更新を行った場合 (「Tomcat アプリケーションをアップグレードする方法を知っています。何が問題になる可能性がありますか?」)、アップロードされたすべてのリソースを誤って削除してしまう可能性があります。

これらの変更により、絶対パスを tomcat によって書き込み可能として構成することをお勧めします。

元の質問に戻って、新しい tomcat が実際にディレクトリへの書き込み権限を持つユーザー tomcat として実行されているかどうかを確認することをお勧めします。ファイルシステムの容量、ユーザーのクォータ、およびディレクトリの所有者と権限も確認してください。

于 2013-01-11T13:53:52.173 に答える
0

問題を解決しました-マルチパートデータの解析方法に関係していました。おそらく文字エンコーディングが新しいサーバーで変更された理由はわかりませんが、コードを変更して動作しています。コメントありがとうございます。

于 2013-01-12T17:14:16.470 に答える