我找不到如何获取 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 中看到的文件夹结构
在本教程中,我遵循以下步骤:
然后创建一个新的 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/