запустить сервис на привилегированном порту от обычного пользователя

Thank you for reading this post, don't forget to subscribe!

Запус­ка­ем сер­вис на при­ви­ле­ги­ро­ван­ном порту.

В каче­стве при­ме­ра будет исполь­зо­вать­ся сер­вис jenkins.

По умол­ча­нию jenkins запус­ка­ет­ся на пор­ту 8080.

Изме­не­ние это­го зна­че­ния пре­кра­тит запуск службы.
$ sudo tail -20 /var/log/jenkins/jenkins.log

Вы може­те решить эту про­бле­му, исполь­зуя воз­мож­но­сти Linux, но это при­ло­же­ние на Java, кото­рое исполь­зу­ет соб­ствен­ный скрипт инициализации.

Оста­но­ви­те служ­бу, если она в дан­ный момент запущена.

Создай­те слу­жеб­ный юнит

Создай­те допол­ни­тель­ный файл кон­фи­гу­ра­ции, кото­рый доба­вит воз­мож­ность CAP_NET_BIND_SERVICE.

Тут исполь­зет­ся файл кон­фи­гу­ра­ции drop-in, что­бы мож­но было исполь­зо­вать его для дру­гих суще­ству­ю­щих служб.

Пере­за­гру­зи­те кон­фи­гу­ра­цию systemd manager.

Запу­сти­те сер­вис jenkins.

Про­верь­те ста­тус службы.

Для таких сер­ви­сов, как nginx, AdGuardHome, тре­бу­ет­ся толь­ко соот­вет­ству­ю­щий под­клю­ча­е­мый файл.

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