在 Amaon EC2 上部署 Tomcat 8 webapp 时权限被拒绝

在 Amaon EC2 上部署 Tomcat 8 webapp 时权限被拒绝

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

我跟着DigitalOcean 的 Tomcat 设置教程。我做的唯一不同的事情是我使用了 Java 8 而不是 7,但我不认为这是导致问题的原因。

当我登录到 tomcat Web 应用程序管理器并上传 war 时出现以下错误:

失败 - 部署上传失败,异常: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

这可能是问题所在吗?

答案1

/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 g-w /opt/tomcat/webapps

(您需要以超级用户权限运行这些命令,因此请sudo根据需要添加前缀)。这也适合Tomcat 安全注意事项

答案2

授予权限

例如对于 Tomcat8

$ cd /var/lib $ ls -ld tomcat8

$ sudo chmod -R o+w tomcat8/

相关内容