• 締切済み

catalina.policyのFilePermissionの設定について。

Webアプリケーションがデプロイされているディレクトリ外にあるディレクトリおよびファイルを読み書きする方法としてcatalina.policyファイルにFilePermissionを設定することにしました。 環境説明: webサーバ: Apache2 Tomcat5 os: CentOS4.4 webアプリのデプロイディレクトリ:/usr/local/tomcat/webapps/myapp 参照したいディレクトリ:/var/local/myapp catalina.policyの設定: SYSTEM CODEパーミッションとCATALINA CODEパーミッションの設定はそのまま。 WEB APPLICATION パーミッションの一番最後に grant codeBase "file:/usr/local/tomcat/webapps/myapp/-" { permission java.io.FilePermission "/var/local/myapp","read,write,execute,delete" }; と入力しました。これによりmyappディレクトリ以下のclassファイルが/var/local/myappディレクトリ内にアクセスできるようになると思うのですが、/usr/local/tomcat/bin/catalina.sh start -securityとしてTomcatを起動。またApacheも起動して実行すると以下のエラーが発生してしまいます。 java.security.AccessControlException: access denied (java.io.FilePermission /var/local/myapp read) java.security.AccessControlContext.checkPermission(AccessControlContext.java:264) java.security.AccessController.checkPermission(AccessController.java:427) java.lang.SecurityManager.checkPermission(SecurityManager.java:532) java.lang.SecurityManager.checkRead(SecurityManager.java:871) java.io.File.canRead(File.java:658) ShowFile.doGet(ShowFile.java:17) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:585) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:517) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) 何か指定が違っているのでしょうか?あるいは、catalina.policyファイル内で何か設定するものがほかにあるのでしょうか?ご教授願えればと思います。よろしくお願いいたします。  

みんなの回答

  • davosuke
  • ベストアンサー率61% (34/55)
回答No.2

返答遅れてすみません。 chmod 777 myapp を実行し見て下さい。 これで解決すると思います。

  • davosuke
  • ベストアンサー率61% (34/55)
回答No.1

以下の補足説明をお願いします。 (1)Apacheの実行ユーザとデプロイユーザは同じですか?? (2)/var/local/myapp readのアクセス権限はどうなってますか??

tteeii
質問者

補足

回答ありがとうございます。うわー。日にちがたってしまって申し訳ありません。早速補足させていただきます。 (1)Apacheの実行ユーザとデプロイユーザは同じですか?? (2)/var/local/myapp readのアクセス権限はどうなってますか?? 1.違います。Apacheの実行ユーザはapacheユーザです。WebアプリのデプロイユーザはTomcatと同一実行ユーザのtomcatです。 2・Tomcatの実行ユーザをtomcatとしていますので、tomcatユーザを所有者としております。パーミッションはこのようになっております。  drwxrwx--- tomcat tomcat ・・・ myapp   よろしくお願いいたします。お待ちしております。   

関連するQ&A