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
.