배경
RHEL 8에서는 Apache Tomcat v8.5.78을 /opt/tomcat/
. 디렉토리의 사용자 및 그룹은 tomcat:tomcat
디렉토리의 내용과 마찬가지로 로 설정됩니다.
톰캣을 시작할 수 있어요
$ sudo -u tomcat /opt/tomcat/bin/catalina.sh start
이제 다음과 같은 파일을 전달하려고 합니다 systemctl
.tomcat.service
[Unit]
Description=Tomcat Server
After=syslog.target network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment='JAVA_OPTS=-Djava.awt.headless=true'
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment='CATALINA_OPTS=-Xms512M -Xmx2048M'
ExecStart=/opt/tomcat/bin/catalina.sh start
ExecStop=/opt/tomcat/bin/catalina.sh stop
[Install]
WantedBy=multi-user.target
서비스 사용자 및 그룹도 tomcat
&로 설정되어 있습니다.tomcat
질문
systemctl을 통해 Tomcat을 시작할 때:
$ sudo systemctl start tomcat.service
"tomcat.service 작업 실패..."라는 메시지가 나타납니다. systemctl status tomcat.service
프로그램
● tomcat.service - Tomcat Server
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2022-06-22 12:11:59 AEST; 1min 29s ago
Process: 1641092 ExecStart=/opt/tomcat/bin/catalina.sh start (code=exited, status=203/EXEC)
그리고 journalctl -xe
다음을 제공합니다:
-- Unit tomcat.service has begun starting up.
Jun 22 11:41:47 my.server.local systemd[1638136]: tomcat.service: Failed to execute command: Permission denied
Jun 22 11:41:47 my.server.local systemd[1638136]: tomcat.service: Failed at step EXEC spawning /opt/tomcat/bin/catalina.sh: Permission d>-- Subject: Process /opt/tomcat/bin/catalina.sh could not be executed
systemctl
서비스 파일이 수동으로 시작할 때와 동일한 사용자를 지정하면 권한 문제가 보고되는 이유는 무엇입니까?
추가 정보
톰 고양이 버전
Tomcat 버전이 필요합니다. 최신 버전으로 업그레이드할 수 없습니다.
내가 또 무엇을 시도했나요?
읽다https://unix.stackexchange.com/a/498494/45940나는
tomcat.service
지시문에서 이것을 시도했지만Type=oneshot
성공하지 못했습니다.읽다https://stackoverflow.com/a/58301082/65889
tomcat.service
작업 디렉토리를 다음으로 설정하려고 시도했지만/opt/tomcat/bin
성공하지 못했습니다.
답변1
.sh
제 경우에는 디렉토리 의 파일 권한 이었습니다 /bin
. 모두 x
(실행 가능) 플래그 가 없습니다 .