Коллеги,

Вот есть такая проблема: Имеется java-приложение (jenkins) которое
умеет работать веб-сервером, в том числе и по https. 

Ставится оно из deb-пакета, предоставляемого производителем приложения
и работает от своего собственного непривилегированного юзера.

В пакете есть файлик в /etc/defaults через который можно много что
настроить, в частности порты на которых слушает web-сервер.

Проблема в том. что хочется чтобы оно слушало на дефолтном порту для
https, т.е. 443.

Для того, чтобы java-приложению дали прибиндиться к порту < 1024, надо
сделать 

sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/java

Мне, в принципе не жалко, большой дыры в безопасности мне это не
создаст (тем более что машинка в интранете). Проблема в другом.
Через пару месяцев другой сотрудник, которому либо я забыл рассказать
про setcap, либо я рассказал, да он забыл, сделает на этой машинке
apt-get upgrade, и к нему приедет апгрейд OpenJDK. И при изменении
бинарника capabilities слетят. И jenkins перестанет запускаться.

Вопрос в том, а куда бы наиболее соответствующим политике дистрибутива
способом прописать скрипт, который будет делать этот  вызов setcap,
чтобы быть уверенным что в момент запуска jenkins бинарник java будет
иметь требуемые capabilities?

Понятно, что пересобирать самому пакеты ни jenkins, ни, упаси боже,
openJDK, не хочется.

(кстати из man setcap я не понял что произойдет с capabilities при
простой перезагрузке, без изменения бинарника - сбросятся они или нет?
Вроде у нас persistent state в linux не принят).

-- 

Ответить