Tomcat не анализирует символические ссылки .war

У меня есть машина для разработки, на которой я ранее устанавливал Tomcat, и просто запускаю ее как одного и того же пользователя, который работал над dev. Я сбросил символическую ссылку в $CATALINA_HOME/webapps в каталог, в который я построил WAR, и каждый раз, когда я обновлял сборку tomcat, следил за символической ссылкой и извлекал новую WAR. Никогда никаких проблем.

Но при подготовке к переносу на производственную машину я создал нового пользователя с ограниченными разрешениями и установил tomcat для запуска в качестве этого пользователя, как и по соображениям безопасности.

Теперь tomcat больше не следит за символической линией, даже когда я даю пользователю право собственности на файл WAR и устанавливаю разрешения на 777. Я не вижу ничего в catalina.out или ежедневного журнала о том, что происходит, либо.

Это еще один шаг к циклу тестирования, чтобы скопировать WAR, так что это не слишком важно, но мне все еще интересно, что происходит.

Разрешения в каталоге webapps:

drwxr-xr-x 3 tomcat tomcat  4096 Dec 11 14:34 webapps

Разрешения в каталоге, который я создаю:

drwxrwxr-x 11 tomcat   tomcat   4096 Dec 11 14:34 target

Разрешения на WAR файл maven:

-rw-rw-r-- 1 tomcat tomcat 16822856 Dec 11 14:34 [webapp].war

Разрешения на символическую ссылку, которую я им создаю:

lrwxrwxrwx 1 tomcat tomcat 60 Dec 11 17:33 [webapp].war -> [webapp directory]/[webapp].war

Ответ 1

Я подозреваю, что у пользователя tomcat нет разрешений на прохождение в одной из вложенных папок, содержащих настоящий WAR файл. Как вы сказали, у него есть разрешение на папки tomcat, чтобы он мог запустить Tomcat, и он может видеть, что символическая ссылка существует.

Возможно, ваш процесс сборки создает файл WAR внутри частной папки, скажем, домашнюю папку пользователя glazius, и это предотвращает чтение пользователем файла tomcat, даже если файл имеет правильные разрешения.

Вы можете легко использовать:

ls -Cf

внутри вашей папки webapps, чтобы проверить цвет символьной ссылки: если пользователь red tomcat не может получить файл, если он синий, он должен работать без проблем.

Если он краснеет, убедитесь, что в каждой папке вашего файла WAR есть разрешение обхода (x) для другой группы. Если, например, путь:/home/glazius/workspace/target/webapp.war, выполните следующие команды:

chmod o+x /home/glazius
chmod o+x /home/glazius/workspace
chmod o+x /home/glazius/workspace/target

Ответ 2

Дайте новому пользователю право на запись на $CATALINA_HOME/work.