Tomcat没有解析.war符号链接

Gla*_*ius 10 java tomcat

我有一台开发机器,我以前安装过Tomcat,只是作为开发工作的同一个用户运行它.我删除了一个符号链接$CATALINA_HOME/webapps到我构建WAR的目录,每次我更新构建tomcat后跟着符号链接并提取新的WAR.没有任何问题.

但是为了准备将其移动到生产机器,我创建了一个具有受限权限的新用户,并将tomcat设置为以该用户身份运行,就像出于安全原因一样.

现在tomcat不再遵循符号链接了,即使我给它的用户拥有WAR文件并将权限设置为777.我也没有看到任何内容catalina.out或日常记录中发生的事情.

这只是将测试周期复制到WAR的一个步骤,所以这不是太关键,但我仍然对于发生了什么感到好奇.

webapps目录的权限:

drwxr-xr-x 3 tomcat tomcat  4096 Dec 11 14:34 webapps
Run Code Online (Sandbox Code Playgroud)

我正在构建的目录的权限:

drwxrwxr-x 11 tomcat   tomcat   4096 Dec 11 14:34 target
Run Code Online (Sandbox Code Playgroud)

WAR文件maven的权限产生:

-rw-rw-r-- 1 tomcat tomcat 16822856 Dec 11 14:34 [webapp].war
Run Code Online (Sandbox Code Playgroud)

我创建的符号链接的权限:

lrwxrwxrwx 1 tomcat tomcat 60 Dec 11 17:33 [webapp].war -> [webapp directory]/[webapp].war
Run Code Online (Sandbox Code Playgroud)

Giu*_*one 7

我怀疑tomcat用户没有对包含真实WAR文件的嵌套文件夹之一的遍历权限.正如你所说,他拥有tomcat文件夹的权限,因此他可以启动Tomcat,他可以看到符号链接存在.

也许您的构建过程在私有文件夹中创建WAR文件,假设用户glazius的主文件夹,这样即使文件具有附加的正确权限,也会阻止tomcat用户读取该文件.

您可以轻松使用:

ls -Cf
Run Code Online (Sandbox Code Playgroud)

在您的webapps文件夹中检查符号链接颜色:如果它是红色tomcat用户无法访问该文件,如果它是蓝色它应该已经没有任何问题.

如果为红色,请确保WAR文件的每个文件夹都具有另一个组的遍历(x)权限.例如,如果路径是/home/glazius/workspace/target/webapp.war,请执行以下命令:

chmod o+x /home/glazius
chmod o+x /home/glazius/workspace
chmod o+x /home/glazius/workspace/target
Run Code Online (Sandbox Code Playgroud)