В сообщении от [Пт 2018-03-02 12:24 +0300] Victor Wagner <v.wag...@postgrespro.ru> пишет:
> Проблема в том. что хочется чтобы оно слушало на дефолтном порту для > https, т.е. 443. > > Для того, чтобы java-приложению дали прибиндиться к порту < 1024, надо > сделать > > sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/java > > Мне, в принципе не жалко, большой дыры в безопасности мне это не > создаст (тем более что машинка в интранете). Проблема в другом. > Через пару месяцев другой сотрудник, которому либо я забыл рассказать > про setcap, либо я рассказал, да он забыл, сделает на этой машинке > apt-get upgrade, и к нему приедет апгрейд OpenJDK. И при изменении > бинарника capabilities слетят. И jenkins перестанет запускаться. Коллеги в рассылке предлагали использовать прокси-сервер, а вашу программу оставить на непривилегированном порту. Хорошая мысль, там и TLS и различные политики можно прикрутить. А если использовать прокси централизовано, для всех сервисов компании, то про вашу программу никто не забудет при смене администратора (она будет прописана в конфигах). > Вопрос в том, а куда бы наиболее соответствующим политике дистрибутива > способом прописать скрипт, который будет делать этот вызов setcap, > чтобы быть уверенным что в момент запуска jenkins бинарник java будет > иметь требуемые capabilities? Если не возражаете против использования systemd для запуска программы, то добавьте в юнит такую строчку: [Service] … ExecStartPre=/sbin/setcap cap_net_bind_service=+ep /usr/local/bin/myprog … > (кстати из man setcap я не понял что произойдет с capabilities при > простой перезагрузке, без изменения бинарника - сбросятся они или нет? > Вроде у нас persistent state в linux не принят). При перезагрузке не сбросятся, а если заменить бинарник, то да, setcap нужно делать заново (или прописать в юните см. выше). -- Коротаев Руслан https://blog.kr.pp.ru
smime.p7s
Description: S/MIME cryptographic signature