【问题标题】:Error while trying to deploy WAR on Tomcat8 on Ubuntu 15.04尝试在 Ubuntu 15.04 上的 Tomcat8 上部署 WAR 时出错
【发布时间】:2016-04-11 01:54:44
【问题描述】:

我正在尝试使用 Tomcat8、Apache 和 Ubuntu 15.04 部署 .war 文件。当我在 tomcat 的 /manager 部分单击“选择要上传的 WAR 文件”时,出现以下错误:

FAIL - 部署上传失败,异常:java.io.FileNotFoundException: /opt/tomcat/webapps/musicStore.war(权限被拒绝)

我该如何解决这个问题?

【问题讨论】:

  • chmod 以完全授予该文件夹的权限
  • 只是 chmod 777 一切?
  • 向世界开放一切?好吧 - 你的选择。我不会这样做。 Tomcat 以特定用户身份运行。只需授予该用户对目录的权限即可。或者不使用管理器 - 而是通过操作系统将文件复制到那里
  • 我是新手。我将如何创建特定用户,然后授予其部署 WAR 的权限?
  • 您的 /opt/tomcat/webapps 目录属于某人(执行 ls -l /opt/tomcat/webapps 以查看它属于谁)。在tomcat运行的时候,执行ps aux | grep catalina查看是哪个用户在运行tomcat。你可以chown thatuser /opt/tomcat/webapps。但是,对于生产系统,我强烈建议不要让管理器应用程序运行,并且不要让 tomcat 自己的目录对其自身进行写操作。它打开了很多攻击向量并且是不好的做法

标签: java apache tomcat ubuntu tomcat8


【解决方案1】:

将 cmets 转换为答案,添加更多信息:

您的/opt/tomcat/webapps 目录属于某人(执行ls -l /opt/tomcat/webapps 以查看它属于谁)。

当 tomcat 运行时,执行ps aux | grep catalina 以查看哪个用户正在运行 tomcat(取决于您启动它的方式 - 可能是您自己的当前用户)。你可以chown <thatuser> /opt/tomcat/webapps。但是,对于生产系统,我强烈建议不要让管理器应用程序运行,并且不要让 tomcat 自己的目录对其自身进行写操作。它打开了很多攻击向量,恕我直言,这是不好的做法

如果是本地开发系统,舒适性通常胜过安全性 - 您可能会选择保留管理器应用。

为了减轻生产中潜在的管理器应用程序问题,至少限制对已知 IP 地址的访问,保持用户数据库良好维护(不是在带有明文密码的 tomcat-users.xml 中)。但是,在我的生产系统上,tomcat 无法写入自己的 webapps 目录 - 因此通过管理器应用程序热部署应用程序无论如何都不会工作......

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 2014-07-06
  • 2012-08-08
  • 2015-05-08
  • 1970-01-01
  • 2018-07-01
  • 2019-10-01
  • 1970-01-01
  • 2013-04-16
相关资源
最近更新 更多