Tomcat 未启动:权限被拒绝
Posted
技术标签:
【中文标题】Tomcat 未启动:权限被拒绝【英文标题】:Tomcat is not getting started: Permission denied 【发布时间】:2020-08-09 04:08:21 【问题描述】:尝试使用 systemd 服务
启动 tomcat 时出现以下错误systemd[1]: tomcat.service: Failed to execute command: Permission denied
systemd[1]: tomcat.service: Failed at step EXEC spawning /opt/tomcat/bin/startup.sh: Permission denied
下面是我的 tomcat.service 配置
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
这些是我对 bin 目录中文件的权限
drwxrwx---. 2 tomcat tomcat 4096 Mar 22 05:56 .
drwx------. 9 tomcat tomcat 276 Mar 22 05:58 ..
-rw-r-----. 1 tomcat tomcat 35071 Mar 11 09:33 bootstrap.jar
-rw-r-----. 1 tomcat tomcat 15953 Mar 11 09:33 catalina.bat
-rwxr-x--x. 1 tomcat tomcat 23792 Mar 11 09:33 catalina.sh
-rw-r-----. 1 tomcat tomcat 1664 Mar 11 09:36 catalina-tasks.xml
-rw-r-----. 1 tomcat tomcat 2123 Mar 11 09:33 ciphers.bat
-rwxr-x--x. 1 tomcat tomcat 1997 Mar 11 09:33 ciphers.sh
-rw-r-----. 1 tomcat tomcat 25197 Mar 11 09:33 commons-daemon.jar
-rw-r-----. 1 tomcat tomcat 206895 Mar 11 09:33 commons-daemon-native.tar.gz
-rw-r-----. 1 tomcat tomcat 2040 Mar 11 09:33 configtest.bat
-rwxr-x--x. 1 tomcat tomcat 1922 Mar 11 09:33 configtest.sh
-rwxr-x--x. 1 tomcat tomcat 8675 Mar 11 09:33 daemon.sh
-rw-r-----. 1 tomcat tomcat 2091 Mar 11 09:33 digest.bat
-rwxr-x--x. 1 tomcat tomcat 1965 Mar 11 09:33 digest.sh
-rw-r-----. 1 tomcat tomcat 3606 Mar 11 09:33 makebase.bat
-rwxr-x--x. 1 tomcat tomcat 3382 Mar 11 09:33 makebase.sh
-rw-r-----. 1 tomcat tomcat 3460 Mar 11 09:33 setclasspath.bat
-rwxr-x--x. 1 tomcat tomcat 3708 Mar 11 09:33 setclasspath.sh
-rw-r-----. 1 tomcat tomcat 2020 Mar 11 09:33 shutdown.bat
-rwxr-x--x. 1 tomcat tomcat 1902 Mar 11 09:33 shutdown.sh
-rw-r-----. 1 tomcat tomcat 2022 Mar 11 09:33 startup.bat
-rwxr-x--x. 1 tomcat tomcat 1904 Mar 11 09:33 startup.sh
-rw-r-----. 1 tomcat tomcat 49372 Mar 11 09:33 tomcat-juli.jar
-rw-r-----. 1 tomcat tomcat 419428 Mar 11 09:33 tomcat-native.tar.gz
-rw-r-----. 1 tomcat tomcat 4574 Mar 11 09:33 tool-wrapper.bat
注意:我可以使用 sudo ./startup.sh 命令通过导航到 bin 目录来启动 tomcat
【问题讨论】:
是/opt
的权限,不允许tomcat
?
您的.
和..
看起来很奇怪,请将rx
添加到/opt
和/opt/bin
【参考方案1】:
你能检查一下你的/opt
和/opt/bin
权限吗
看起来像
chmod a+rx /opt /opt/tomcat/ /opt/tomcat/bin
应该有帮助
【讨论】:
这里是 /opt ls -l /opt total 0 drwxr-xr-x 的权限。 3 根 21 Apr 23 12:55 eff.org drwx--x--x。 9 tomcat tomcat 276 Mar 22 05:58 tomcat and for /opt/tomcat/bin ls -l total 128 drwxrwx---。 2 tomcat tomcat 4096 Mar 22 05:56 bin @Orel 尝试了上述命令,但问题仍然相同......权限被拒绝 我已经执行了上面的命令,但是还是不行。 你在使用 SELinux 吗? @Ôrel 谢谢。在经历了很多麻烦之后,它帮助了我。【参考方案2】:我想您遵循了许多复制的在线教程之一,其中tomcat
用户使用/opt/tomcat/
作为其主目录,使用类似的内容:
sudo useradd -d /opt/tomcat -s /sbin/nologin tomcat
SELinux 正在阻止应用程序从主目录启动,并在/var/log/audit/audit.log
中显示如下消息
type=AVC msg=audit(1614250994.710:33614): avc: denied execute for pid=60244 comm="(artup.sh)" name="startup.sh" dev="dm-3" ino=19000615 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0
我不相信tomcat
用户需要主文件夹,因此请使用以下命令从现有用户中删除它:
sudo usermod -d / tomcat
或者使用以下命令创建新用户:
sudo useradd -M -s /sbin/nologin tomcat
之后使用以下命令重置 SELinux 属性:
sudo restorecon -rv /opt/tomcat
【讨论】:
【参考方案3】:我遇到了同样的问题并通过 restorecon 修复它。 我不知道问题发生的原因是否与原始问题相同,但我认为这取决于如何安装 tomcat。
一般来说,我们将 tar.gz 下载到一个临时目录中,然后在该临时目录中 tar xzvf。接下来,我们将其移至 /opt 或 /usr/local。那时,如果我们使用 mv,SELinux 上下文没有改变,就会发生权限被拒绝。但是您可以通过 restorecon 更改它。如果我们使用 cp -R,SELinux 上下文会改变,那么权限被拒绝就不会发生。
【讨论】:
以上是关于Tomcat 未启动:权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat7不会在ubuntu上启动(全新安装),权限被拒绝[关闭]
RHEL8 selinux不允许服务从systemctl启动,而tomcat/bin/startup.sh拒绝权限[关闭]
通过 webmin/virtualmin 启动 apache 时权限被拒绝