Препятствуйте тому, чтобы APT перезаписал пользовательские файлы

Мой сервер запускает JAVA-приложение, которое требует, чтобы я заменил несколько файлов библиотеки Java, которые я загрузил самостоятельно. Это имеет отношение к расширениям безопасности JCE и не действительно относится к моему вопросу.

Я нашел, что эти файлы библиотеки имеют тенденцию быть перезаписанными Кв. когда это более поздние обновления мой пакет Java.

Существует ли способно-дружественный способ замаскировать эти определенные файлы, настолько склонные, не коснется их?

Потенциальные решения

  1. Я рассматриваю просто удаление флага записи из файлов, хотя я ожидаю, что это вызовет склонный извергнуть его кишки везде когда это более поздние попытки перезаписать их?

  2. Возможно, существует Java пользовательский каталог библиотеки, о котором я не знаю, где я могу парковать свои файлы, и они будут загружены вместо значений по умолчанию пакета?

  3. Возможность последнего средства, которую я рассматриваю, пишет задание крона для периодической замены файлов моими версиями. Я ненавижу эту опцию.

Подробное объяснение

Мы управляем довольно тяжелым веб-приложением Java (сборка под заказчика GeoServer). Приложение шифрует пользовательские данные с помощью Расширения Криптографии Java.

Версии JCE, что способные установки являются международной версией, однако, эта версия, относительно наносят вред. Существует другая версия (что мы должны использовать). Этой версии только позволяют быть установленной в определенных локалях. Мы установили его путем замены банок JCE по умолчанию (в /usr/lib/jvm/java-7-oracle/jre/lib/security) с соответствующими версиями этих банок, которых мы требуем. Именно эти два конкретных файла банки под этим местоположением периодически заменяются Кв., и закончите тем, что повредили наше приложение. В свою очередь я боюсь выполнить обновления программного обеспечения.

0
задан 28 March 2015 в 19:09
2 ответа

Мой "Ответ" оказался чрезвычайно специфичным для конкретного приложения.

Короче говоря

Каждый раз при запуске моего Java-приложения банки JCE перекопируются.

Подробнее

Мое java-приложение запускается через Jetty. Я использую пользовательский запуск для управления пристанью. Я добавил скрипт stanza в мое задание запуска, который копируется в банки JCE перед запуском jetty.

В ходе тестирования я обнаружил, что если я изменю установку java обратно на JCE по умолчанию во время работы приложения, мое приложение кажется полностью незатронутым. Я думаю, что это связано с тем, как linux обрабатывает обработчики чтения файлов. У меня все еще есть дескриптор старого файла, даже после его замены в файловой системе, ранее существовавшие дескрипторы все еще работают до тех пор, пока они не будут закрыты.

Посмотрим, не приведет ли это к сильной боли. Я не думаю, что это очень плохо. Это лучший из плохих вариантов, которые я нашел до сих пор. В противном случае, нам придется изменить источник нашего приложения, чтобы использовать то, что мне кажется очень саморазрушающим, в самом java-источнике.

0
ответ дан 5 December 2019 в 13:31

Как бы то ни было, у вас будет та же проблема, если вы используете CentOS. Я только что столкнулся с такой же проблемой с RHEL. Одним из решений, которое я нашел, было использование OpenJDK, который якобы поставляется с неограниченной силой JCE, включало:

Nevermind JCE unlimited strength, use OpenJDK

That wasn't a option for me, but I ran across this:

Upgrade safe JCE deployment for Java on RHEL

Which suggests pointing to the JCE jars using the Alternations command. Я использовал этот метод и понизил/обновил Java, чтобы протестировать его, и похоже, что он работает хорошо. Реальные команды, которые я использовал здесь:

https://gist.github.com/bmaupin/4396be4bb29c5ad440b6

0
ответ дан 5 December 2019 в 13:31

Теги

Похожие вопросы