- 締切済み
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ファイル内で何か設定するものがほかにあるのでしょうか?ご教授願えればと思います。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
補足
回答ありがとうございます。うわー。日にちがたってしまって申し訳ありません。早速補足させていただきます。 (1)Apacheの実行ユーザとデプロイユーザは同じですか?? (2)/var/local/myapp readのアクセス権限はどうなってますか?? 1.違います。Apacheの実行ユーザはapacheユーザです。WebアプリのデプロイユーザはTomcatと同一実行ユーザのtomcatです。 2・Tomcatの実行ユーザをtomcatとしていますので、tomcatユーザを所有者としております。パーミッションはこのようになっております。 drwxrwx--- tomcat tomcat ・・・ myapp よろしくお願いいたします。お待ちしております。