Tomcat 9 на порте 443, работающий только с root, что может быть затруднено

После стольких чтений статей serverfault.com я успешно настроил свой tomcat 9 на порт 443.

Но проблема в том, что 443 - это привилегированный порт, в который я добавил пользователя root в нижеприведенном tomcat.service, но как я могу этого избежать, поскольку я хочу дать разрешение пользователю tomcat только для одной службы. Надеюсь, вы понимаете мою проблему и посоветуете лучший ответ.

vim /etc/systemd/system/tomcat.service


[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking



############## I added root user here ##########################
**User=root
Group=root**

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
1
задан 9 August 2021 в 10:14
1 ответ

Вы можете запускать Tomcat (или что-то еще) от имени пользователя без полномочий root и по-прежнему привязываться к системным портам, если вы предоставили набор возможностей CAP_NET_BIND_SERVICE. Вы можете сделать это в своем системном блоке, добавив AmbientCapabilities= в раздел [Service]:

AmbientCapabilities=CAP_NET_BIND_SERVICE

Очевидно, вам также потребуется удалить User= и Группа=.

Вы также должны рассмотреть возможность использования NoNewPrivileges=true , чтобы запретить приложению повышать свои привилегии.

1
ответ дан 10 August 2021 в 19:50

Теги

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