catalina.out 中出现了许多“Permission denied”错误信息。

14

如何安装Apache Web服务器和Apache Tomcat以避免出现以下错误:

java.io.FileNotFoundException: /usr/local/apache-tomcat-7.0.5/work/Catalina/localhost/_/SESSIONS.ser (权限被拒绝)

在路径 /usr/local/apache-tomcat-7.0.5/logs/catalina.out 中。

我认为我应该为Apache用户做一些事情,因为当我对tomcat文件夹执行 chmod 777 -R ./ 命令时,所有错误都消失了。


1
将 SESSIONS.ser 的 chown 设置为 Apache 的用户/组,并/或将其设置为 666 模式。 - Marc B
这个问题是否仅限于sessions.rer?如果我只更改此文件的所有者,今晚其他文件是否会出现相同的错误?我认为我应该在/usr/local/apache-tomcat-7.0.5目录下执行此操作,但我不确定是否仅限于/usr/local/apache-tomcat-7.0.5。通过此chown或chmod 666操作会对我的服务器安全性产生什么影响? - Mohammad Ali Akbari
似乎这个问题应该在姊妹网站ServerFault.com上,而不是在Stack Overflow上,因为它并不涉及具体的编程问题。 - Basil Bourque
3个回答

24
$ chmod -R 777 webapps temp logs work conf

非常危险,不要这样做,我写了“不要这样做”吗?不要这样做!猜猜你的tomcat-users.xml文件在哪里,包含了你的用户名和明文密码?

在UNIX上给予全世界读写执行权限(除了/tmp以外,在生产环境中也永远不要这样做)是很愚蠢的。而且,它使得你的第一行命令“chown -R tomcat6”完全没用。

确保tomcat以tomcat7身份运行(对于tomcat6则为tomcat6),然后简单地执行:

$ cd $TOMCAT_BASE
$ chown -R tomcat7:tomcat7 webapps temp logs work conf
$ chmod -R 660 webapps temp logs work conf

[编辑] 根据评论更改 770660,因为被讨论的文件不需要被执行。

如果你想要能够在那里读取、写入或执行文件,就需要将自己加入到tomcat7组中。


770 使配置文件可执行。 - Leos Literak
但这会使目录无法访问。 - Leos Literak

6

我不能保证这样做的安全性,但是

$ cd /usr/local/tomcat/ #or /usr/shared/tomcat6, whatever your $TOMCAT_BASE dir
$ chown -R tomcat6 webapps temp logs work conf
$ chmod -R 777 webapps temp logs work conf

这个方法对于这种情况非常有效。

我的Tomcat安装因权限错误而失败,但是按照这种方式打开一切都解决了。


20
将配置文件设置为777 = 失败 - DrStrangepork
@DrStrangepork - 同意。不要这样做。它可能会解决您的即时问题,但这是一个巨大的安全漏洞,类似于因为自己被锁在房子外面而砸碎自己的窗户。 - candu

0

我曾经在一个老的Tomcat-6实现中遇到过类似的情况...

...
SEVERE: Error deploying web application directory host-manager
java.io.FileNotFoundException: /opt/tomcat-6/conf/Catalina/localhost/host-manager.xml (Permission denied)
...

而且,Web应用程序的XML文件都在那里,所有权和权限都是“tomcat:tomcat”和“644”。

对我来说,解决方案是将整体权限设置为Tomcat所需的“0755”。

对于注重安全的人来说,该实现的server.xml使用JDBC Realm进行身份验证,因此我们甚至不使用tomcat-users.xml。因此,它是随安装一起提供的默认文件,甚至在其中注释掉了默认用户帐户(例如“tomcat”和“manager”)。我知道在Tomcat-7中,默认情况下注释了tomcat-users.xml中的帐户。

希望对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接