由于权限被拒绝,Tomcat Webapp无法在目录中创建文件

时间:2018-10-16 03:37:44

标签: java tomcat servlets centos

在我的项目中,我创建了一个servlet,用户可以在该servlet上上传媒体文件。这些文件将根据上下文参数中的路径保存。在我的家用Windows PC中,它运作良好。但是,在我的Linux vps上,localhost.log文件上出现此拒绝权限错误。

java.io.IOException: Permission denied
        at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.base/java.io.File.createNewFile(File.java:1024)
        at post.Upload.doPost(Upload.java:194)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

该文件应该在/ var / sociogram / media / public上创建并写入。我尝试过

chown -R tomcat:tomcat /var/sociogram/media 

,并且在执行操作时对用户具有读写权限

ls -l /var/sociogram/media

web.xml: https://github.com/Manoharan-Ajay-Anand/sociogram/blob/master/Sociogram/src/main/webapp/WEB-INF/web.xml

servlet: https://github.com/Manoharan-Ajay-Anand/sociogram/blob/master/Sociogram/src/main/java/post/Upload.java

2 个答案:

答案 0 :(得分:0)

  

但是,在我的linux vps上,localhost.log文件上出现此拒绝权限错误。

该错误消息中提到的文件路径-是否存在?

$ CATALINA_BASE目录中是否有“ temp”目录? (除了通常的“ conf”,“ webapps”,“ logs”和“ work”目录)。

答案 1 :(得分:0)

主要问题是我的目录仅具有读写权限。我意识到,对于unix系统,必须对目录授予x权限,以便该程序可以横向访问目录。没有它的读取,写权限将毫无用处。