tomcat8 распаковываю war всегда удаляю мой файл smlink - PullRequest
0 голосов
/ 10 января 2020

При использовании команды ./startup.sh в tomcat удален мой символьный c файл ссылки.

Как мне решить эту проблему.

Я не хочу удалять файл ссылок my symboli c от tomcat.

Предыдущее описание: My Environment [os: centos7, java: 1.8.0_131, весенняя версия: 3.2.12.RELEASE]

  1. установить и распаковать apache -tomcat-8.5.15
  2. изменить <Host name="localhost" appBase="" unpackWars="true" autoDeply="true"> в apache-tomcat-8.5.15/conf/server.xml
  3. выполнить команду mkdir /home/data
  4. выполнить команду ln -s /home/data apache-tomcat-8.5.15/uploadfiles , ln -s /home/data apache-tomcat-8.5.15/ROOT/uploadfiles
  5. Загрузка файла в /home/data apache-tomcat-8.5.15/ROOT/uploadfiles или /home/data apache-tomcat-8.5.15/uploadfiles
  6. выполнение команды ./startup.sh
  7. tomcat произойдет удаление файлов в apache-tomcat-8.5.15/ROOT/uploadfiles

Я хочу использовать файл img в символьной ссылке c из пути тега img. но когда исполняется команда ./startup.sh мой удаленный файл img. downloadservlet мне не подходит.

1 Ответ

0 голосов
/ 13 января 2020

Tomcat делает именно то, что вы говорите: <Host ... unpackWars="true"> означает, что war-файлы будут распакованы, и каталог webapps Tomcat не должен быть испорчен.

Более того: это действительно плохая практика иметь каталог загрузки прямо в каталоге веб-приложений tomcat, поскольку вы открываете себя для уязвимостей удаленного выполнения кода. Предположим, кто-то загрузил файл JSP, а затем запросил его: он будет скомпилирован на стороне сервера и выполнен с теми же разрешениями, что и Tomcat. Не очень хороший результат.

Возможно, вы связываете этот каталог, чтобы отделить приложение от загруженных файлов, для целей резервного копирования. Нет необходимости сопоставлять какой-либо каталог с каталогом веб-приложений. Просто предоставьте DownloadServlet, который обслуживает файлы из предварительно настроенных местоположений, и все готово.

...