如何将Java Servlet容器保存为除Tomcat之外的“所有者/组”?

时间:2011-09-29 18:58:05

标签: linux file tomcat permissions io

我有一个java servlet。当它保存文件时,它将它们保存为tomcat:tomcat(在linux环境中)。我实际上需要它将它保存为sportsfan:tomcat as sportsfan是FTP用户,还需要访问权限来创建,修改或覆盖这些文件。

我想过运行tomcat作为sportsfan:tomcat,但是我在一个tomcat实例下运行多个应用程序。

执行此操作的最佳方法可能是让FTP用户作为tomcat组的一部分登录。那会是一种正确的方法吗?

请告知。

1 个答案:

答案 0 :(得分:0)

sportsfan用户ftp添加到tomcat组可能是一个很好的解决方案,但在此之前检查哪些是您系统中具有此权限的可修改文件,并考虑安全风险。

另一种解决方案:创建sportsfan群组并将sportsfan用户添加到其中。然后更改upload目录的组并将其设置为setgid

chgrp sportsfan upload
chmod g+s upload

之后,upload中的新文件将与tomcat:sportsfan所有者:组一起创建。它并不完全是您要求的,但Linux上不支持更改用户ID(setuid目录)。维基百科有一篇关于setuid and setgid directories的非常好的文章。此外,您必须将umask用户的tomcat值设置为 000x (例如0002)或类似的值,以便提供对该群组的完全访问权限。

第3个解决方案:设置一个cron作业,每n分钟更改一次权限。