доступ для чтения к корневому/родительскому каталогу в tomcat на Solaris

Я запускаю tomcat7 в SunOS 5.10 и разрабатываю веб-приложение в каталоге webapp/ROOT/. Я пытаюсь в приложении увидеть, есть ли там каталог webapp/foo:

String invpath = application.getRealPath( "user" ) //I also use this for something else
String soapPath = invpath.substring( 0, invpath.indexOf( "ROOT/user" ) ) + "foo";
            out.print(soapPath);
            //test if SOAP is installed
            File soap = new File( soapPath );
            if( soap.exists() )   //this is the line he doesn't like much
            {//html code}

но кот бросает меня:

org.apache.jasper.JasperException: An exception occurred processing JSP page /content/home.jsp at line 83

java.security.AccessControlException: access denied ("java.io.FilePermission" "/path/to/tomcat/webapps/foo" "read")

И абсолютный путь к каталогу - хороший.

У меня есть разрешения на чтение для всех в этом каталоге, и когда я запускаю этот код на машине с Debian, он работает нормально... Я почти не знаком с Solaris/SunOS (но довольно хорошо знаю Linux), поэтому моя ошибка может быть очень глупой. !


person MacTapin    schedule 06.12.2012    source источник
comment
Для тестирования требуется привилегия выполнения в каталоге. И вам нужно выполнить во всех каталогах по пути: /path/to/tomcat/webapps/   -  person jim mcnamara    schedule 07.12.2012
comment
Права доступа к каталогу, который я хочу проверить, равны drwxr-xr-x, и я (кот) владелец, так что это не должно быть проблемой...   -  person MacTapin    schedule 07.12.2012
comment
Также я попытался запустить скрипт через свое приложение под ROOT/scripts/zip.sh с разрешениями rwxr-xr-x, и я все еще являюсь владельцем. Может быть, что-то не так в конфигурации tomcat?   -  person MacTapin    schedule 07.12.2012
comment
РЕДАКТИРОВАТЬ: я забыл упомянуть, что выполнение сценария идет не так, и журнал tomcat дает мне почти то же самое: java.security.AccessControlException: access denied ("java.io.FilePermission" "/path/to/tomcat/webapps/ROOT/scripts/zip.sh" "execute"), хотя он является исполняемым для всех!   -  person MacTapin    schedule 07.12.2012
comment
ВСЕ каталоги выше foo должны выполняться для вас. что показывает ls -ld для веб-приложений, tomcat и выше? Вы будете получать ошибки, пока не попадете в самый верхний каталог, который вы можете выполнить/читать. Если разрешения дело. Ваше приложение работает от вашего имени? Некоторые конфигурации запускают apache как пользователи, как никто, или как владелец приложения. getfacl покажет вам, есть ли активные ACL.   -  person jim mcnamara    schedule 07.12.2012
comment
Итак, я проверил от root до своего приложения и до foo, и в каждом родительском каталоге есть как минимум rwxr-xr-x, плюс я проверил, и я владею процессами. Но, видимо, это может быть проблема с SecurityManager. Я собираюсь изучить catalina.policy, но спасибо за помощь :)   -  person MacTapin    schedule 07.12.2012


Ответы (1)


Таким образом, похоже, что tomcat был запущен с параметром -security, который в основном запрещает доступ почти ко всему, если это не указано в файле конфигурации Security Manager (conf/catalina.policy)... Документация здесь: http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html

person MacTapin    schedule 07.12.2012