在Amaon EC2上掺杂Tomcat 8 webapp时,权限被拒绝

我找不到如何获得对tomcat文件夹的写入和读取权限。

我按照DigitalOcean的设置Tomcat的教程进行了操作 。 我唯一不同的是我使用的是Java 8而不是7,但我不认为这会导致问题。

当我登录到tomcat web应用程序管理器并上传战争时,我收到以下错误:

失败 – 部署上传失败,exception:java.io.FileNotFoundException:/opt/tomcat/webapps/SimpleServlet.war(权限被拒绝)

当我使用Filezilla连接到EC2并且我想将文件放入webapps文件夹时:

错误:/opt/tomcat/webapps/SimpleServlet.war:打开以进行写入:权限被拒绝
错误:文件传输失败

ls -la /opt/tomcat/webapps是:

 total 28 drwxr-xr-x 7 root root 4096 Nov 20 09:19 . drwxr-xr-x 9 root root 4096 Nov 28 16:34 .. drwxr-xr-x 14 root root 4096 Nov 28 16:34 docs drwxr-xr-x 6 root root 4096 Nov 28 16:34 examples drwxr-xr-x 5 root root 4096 Nov 28 16:34 host-manager drwxr-xr-x 5 root root 4096 Nov 28 16:34 manager drwxr-xr-x 3 root root 4096 Nov 28 16:34 ROOT 

但这是FileZilla中可以看到的文件夹结构

图像filezilla ec2结构

在教程中我遵循了这一步:

然后创建一个新的tomcat用户。 我们将使这个用户成为tomcat组的成员,主目录为/ opt / tomcat(我们将安装Tomcat),shell为/ bin / false(因此没有人可以登录该帐户):

 sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat 

这可能是问题吗?

/opt/tomcat声明为tomcat用户的主目录,但属于root用户( tomcat用户没有写入权限)。

擦除教程,特别是权限部分,我对教程的质量感到复杂。 它在改变文件夹的权限时谈到“给tomcat用户写入访问conf目录的权限”。 没有Web应用程序服务器用户对软件运行的写权限对于生产使用似乎是合理的(攻击者利用tomcat进程将无法修改软件),这也将阻止您使用tomcat Web应用程序管理器部署应用程序。

我要设置tomcat作为webapps组:

 chgrp -R tomcat /opt/tomcat/webapps 

当您需要部署新应用程序时,请为该组添加写入权限:

 chmod -R g+w /opt/tomcat/webapps 

部署后再次删除的内容:

 chmod -R gw /opt/tomcat/webapps 

(您需要以超级用户权限运行这些命令,因此请根据需要添加sudo前缀)。 这也适合Tomcat Security Considerations HowTo 。