AccessDeniedException обход файлового дерева с помощью tomcat
Я создаю сервлет для удаленного запуска отдельной Java-программы на сервере. Программа просматривает дерево папок (KB360/student и KB360/admin) на сервере. Программа работает сама по себе, но при запуске ее в tomcat я получаю AccessDeniedException
, Я рекурсивно подавил пользователя и группу на tomcat7. Я также попробовал это как root. Из исследований, которые я провел до сих пор, кажется, что это не должно быть проблемой с tomcat SecurityManager. Однако, чтобы увидеть, если это была проблема, я добавил все разрешения для catalina.policy и перезапустил tomcat.
Любые идеи были бы хорошы. Благодарю.
Ниже приведен список папок и ошибка.
/home/user/Desktop/Dropbox/Public/KB360
drwxrwxr-x 5 tomcat7 tomcat7 4096 Jun 25 17:39 ./
drwxrwxr-x 5 user user 4096 Jul 3 22:30 ../
drwxrwxrwx 2 tomcat7 tomcat7 4096 Jul 29 23:43 admin/
-rw-rw-r-- 1 tomcat7 tomcat7 2188 May 25 00:08 kb.jnlp
drwxrwxrwx 2 tomcat7 tomcat7 4096 Jul 29 23:42 student/
drwxrwxr-x 2 tomcat7 tomcat7 4096 Jul 1 02:58 upload/
java.nio.file.AccessDeniedException: /home/user/Desktop/Dropbox/Public/KB360/student
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
at sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:143)
at sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:96)
at java.nio.file.Files.readAttributes(Files.java:1684)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:105)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:69)
at java.nio.file.Files.walkFileTree(Files.java:2600)
at java.nio.file.Files.walkFileTree(Files.java:2633)
at kb360.service.UpdateIndex.findFilesInFolder(UpdateIndex.java:66)
at kb360.service.UpdateIndex.update(UpdateIndex.java:181)
at kb360.service.UpdateIndexes.update(UpdateIndexes.java:50)
at kb360.service.UpdateIndexes.update(UpdateIndexes.java:61)
at kb360.service.UpdateIndexes.main(UpdateIndexes.java:132)
at IndexFiles.startRMIServer(IndexFiles.java:57)
at IndexFiles.doGet(IndexFiles.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
1 ответ
Я узнал, что я должен был дать разрешения на родительские папки, начиная с дома. Я изменил группу на кота и chmod
разрешения для предоставления необходимого доступа к группе.