tomcat无法将文件写入WEB-INF文件夹

tomcat无法将文件写入WEB-INF文件夹

我使用了cpanel+tomcat,项目结构如下:



 ----索引.jsp

 ---- 样本.txt

 ----- /WEB-INF/classes/pack2/sample2.txt

tomcat 可以使用权限 664 写入 sample.txt 。但无法写入 /WEB-INF/classes/pack2/sample2.txt

/WEB-INF/classes/pack2/ 具有权限 775,sample2.txt 具有权限 775。web-inf 文件夹中的所有文件夹和文件都包含权限 775,并且文件的所有者是 Ftp 用户。

权限为:

root@panther [/home/domain/public_html]# ls -la

总计 15884

drwxr-x--- 4 域名 无人 4096 1月 9 日 19:10 ./

drwx--x--x 11域域4096 1月28日 12:06 ../

-rw-r--r-- 1 域名 域名 0 10月2日 14:44 .htaccess

drwxr-xr-x 5 域名 域名 4096 十月 8 19:26 ROOT/

-rw-r--r-- 1 域名 域名 16216478 1月9日 19:10 ROOT.zip

对于所有文件所有者,组是域。域是 ftp 用户。tomcat 是 nobody 组的成员。

答案1

您提供的信息不足以给出明确答案;但您提供的信息足以让我尝试一下。我假设问题出在 tomcat 之外,在文件系统权限中 - 但也可能是 tomcat 或您的应用程序有其他配置,限制了它允许自己写入文件系统上的哪些位置。

您提到所有文件夹都是 775 - 对于所有者来说是 rwx,对于拥有组来说是 rwx,对于其他所有人来说是读取和执行。

您提到的问题是 tomcat(以及运行 tomcat 的用户)无法在 /WEB-INF/classes/pack2/ 中创建文件

如果运行 tomcat 的用户是目录的所有者,他们就能够在该目录中创建文件 - 因此它必须以不同的用户身份运行

如果运行 tomcat 的用户属于拥有该目录的组,则权限足够,他们仍然应该具有创建文件的能力 - 因此我们可以推断,运行 tomcat 的用户也不属于拥有该目录的组

因此,唯一剩下的可能性是运行 tomcat 的用户既不是拥有该目录的用户,也不是拥有该目录的组的成员 - 或者发生了一些奇怪的事情。

解决这个问题的一个方法是将文件夹设为 777 - 但我不会将其称为“解决方案”,因为这会让系统完全暴露在滥用之下,因为任何人都可以在那里写入。另一种方法是将运行 tomcat 的用户添加到拥有该目录的组中;但我不知道该组是什么,所以我不知道这是否是一个合适的解决方案。

另一种方法是创建一个新组以控制对此文件夹的访问;使用 chgrp 将文件夹的组所有者更改为新组,并将需要对该文件夹具有写权限的任何人添加到该组中。

相关内容