2013-07-30 13 views
0

我正在創建一個servlet以在服務器上遠程運行單獨的Java程序。該程序在服務器上散步一組文件夾(KB360/student和KB360/admin)。該程序本身工作,但在tomcat中運行時,我得到一個AccessDeniedException。遞歸地將用戶和組轉換爲tomcat7。我也試過它作爲根。從迄今爲止我所做的研究來看,它似乎不應該成爲tomcat SecurityManager的問題。但是,要查看是否有問題,我將所有權限添加到catalina.policy並重新啓動tomcat。AccessDeniedException使用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

我發現我不得不從家裏給父文件夾授權。我將組更改爲tomcat和chmod給予組訪問權限的權限。