Tomcat webapp не может создать файл в каталоге, поскольку разрешение отклонено

70
6

В моем проекте я создал сервлет, на котором пользователи могут загружать медиафайлы. Эти файлы будут сохранены на основе пути в контексте param. В моем домашнем компьютере Windows это работает хорошо. Однако в моем 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

сервлет: https://github.com/Manoharan-Ajay-Anand/sociogram/blob/master/Sociogram/src/main/java/post/Upload.java

спросил(а) 2018-10-16T06:37:00+03:00 2 года назад
1
Решение
117

Основная проблема заключалась в том, что в моих каталогах были только права на чтение. Я понял, что для систем unix x должно быть задано разрешение для каталогов, чтобы программа могла поперек каталога. Без его чтения права на запись бесполезны.

ответил(а) 2018-10-21T05:43:00+03:00 2 года назад
42

Однако в моем Linux vps есть это разрешение, которое отклоняет ошибку, которая появляется в файле localhost.log.

Путь к файлу, упомянутый в этом сообщении об ошибке - существует ли он?

У вас есть каталог temp в каталоге $ CATALINA_BASE? (Наряду с обычными каталогами "conf", "webapps", "logs" и "work").

ответил(а) 2018-10-16T19:54:00+03:00 2 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема