Você precisa executar o daemon-reload systemctl antes que o systemd tome conhecimento do seu novo serviço Tomcat.
Instalei o Tomcat 8 no Debian 8 e preciso endurecer o servidor da Web.
Estou seguindo o guia de documentação oficial do Tomcat e na seção de considerações de segurança recomenda criar outro usuário (chamado tomcat) e iniciar o processo do Tomcat com esse usuário:
Tomcat should not be run under the root user. Create a dedicated user for the Tomcat process and provide that user with the minimum necessary permissions for the operating system. For example, it should not be possible to log on remotely using the Tomcat user.
Eu criei o grupo e o usuário do tomcat como o guia sugere. Eu criei o arquivo /etc/systemd/system/tomcat.service com a seguinte configuração:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
#ExecStart=/opt/tomcat/bin/startup.sh
ExecStart=/usr/share/tomcat8/bin/startup.sh
#ExecStop=/opt/tomcat/bin/shutdown.sh
ExecStart=/usr/share/tomcat8/bin/shutdown.sh
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
Eu fiz um soflink para:
root@pc:/lib/systemd/system# ln -s tomcat.service /etc/systemd/system/tomcat.service
Eu habilitei o serviço no systemd:
root@pc:/lib/systemd/system# systemctl enable tomcat.service
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /lib/systemd/system/tomcat.service.
Agora, quando verifiquei se o processo do tomcat estava em execução, não consegui encontrar o usuário do tomcat como proprietário do processo:
tomcat@labnet:/lib/systemd/system$ ps -aux | grep tomcat
tomcat8 18116 1.2 8.0 1662560 325140 ? Sl 10:30 1:04 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed -classpath /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp org.apache.catalina.startup.Bootstrap start
Existe outro usuário chamado tomcat8.
Usando o topo:
tomcat@pc:/lib/systemd/system$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18116 tomcat8 20 0 1662560 325140 21068 S 0,3 8,0 1:04.29 java
Eu verifiquei em / etc / groups, etc / passwd e ambos os usuários estão presentes:
tomcat@pc:/lib/systemd/system$ grep tomcat /etc/group
tomcat8:x:114:
tomcat:x:1005:tomcat
root@pc:/etc/tomcat8# grep tomcat /etc/passwd
tomcat8:x:108:114::/usr/share/tomcat8:/bin/false
tomcat:x:1005:1005:tomcat,,,:/home/tomcat:/bin/bash
O que devo mudar para usar o usuário do tomcat? Meu palpite é que poderia ser o novo usuário usado por padrão nesta versão para executar o processo do Tomcat.
Você precisa executar o daemon-reload systemctl antes que o systemd tome conhecimento do seu novo serviço Tomcat.