serverfault.com 기사를 너무 많이 읽은 후 포트 443에서 Tomcat 9를 성공적으로 구성했습니다.
하지만 문제는 443이 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
CAP_NET_BIND_SERVICE 기능 세트를 부여한 경우 루트가 아닌 사용자로 Tomcat(또는 기타 항목)을 실행할 수 있으며 여전히 시스템 포트에 바인딩할 수 있습니다. 다음을 추가하여 시스템 장치에서 이 작업을 수행할 수 있습니다.AmbientCapabilities=
섹션에서 [Service]
:
AmbientCapabilities=CAP_NET_BIND_SERVICE
User=
물론 및 도 제거해야 합니다 Group=
.
당신은 또한 사용을 고려해야합니다NoNewPrivileges=true
앱의 권한 상승을 제한합니다.