【问题标题】:Tomcat 8.5.42 permission denied when deleting files in webapp在 webapp 中删除文件时,Tomcat 8.5.42 权限被拒绝
【发布时间】:2019-11-13 07:34:06
【问题描述】:

我目前正在 Debian 8.5 上从 Jdk7/Tomcat7 迁移到 JDK8/Tomcat8.5.42。在安装我的应用程序的新版本时,我使用了一个使用 tomcat 用户进行安装的 bash 脚本,该脚本停止了 tomcat,删除了旧的 app.war 及其爆炸的 app 文件夹。使用 Tomcat 7 在这些操作期间我没有任何权限问题,但使用新版本删除 app 文件夹时我有 rm: cannot remove ... Permission denied 错误。

这是../webapps/

4.0K drwxrwxr-x  3 tomcat tomcat 4.0K Jul  2 16:48 .
4.0K drwxrwxr-x 12 tomcat tomcat 4.0K Jul  2 16:48 ..
4.0K drwxr-x---  7 tomcat tomcat 4.0K Jul  2 15:37 app

我不知道这是否重要,但启动脚本的用户属于tomcat 组。另请注意,app 文件夹是由 Tomcat 创建的,因为它是来自 app.war 的结果。

如何配置 Tomcat 以向属于 tomcat 组的所有用户授予正确的权限,以便他们可以删除 webapps 内容。另外我没有root 访问权限,所以我想要一个解决方案。

感谢您的帮助。

【问题讨论】:

  • app 目录的权限为drwxr-x---,因此即使用户在tomcat 组中,他也无法删除它,该组的权限为r-x。在删除之前或部署之后尝试将目录权限更改为drwxrwx---

标签: java tomcat permissions debian user-permissions


【解决方案1】:

尝试使用umask 007而不是027来启动tomcat。

请参阅https://en.wikipedia.org/wiki/Umask 以进一步了解umask

在这里找到提示:https://grokbase.com/t/tomcat/users/035wyqr5rd/file-permissions-in-war-files

您有多个选项可以为用户设置 umask:How to set umask for a system-user?

【讨论】:

  • 感谢您提供这些详细信息。每个用户都有一个全局umask 还是取决于当前进程?我的意思是如果我设置tomcat 用户的umask,它将永远适用还是我需要每次都设置它?再次感谢
  • 这取决于您从How to set umask for a system-user?中选择的方法。您可以修改tomcat启动脚本(例如setenv.sh)在JVM启动之前调用umask,或者您可以修改/etc中的配置以全局更改您的设置。如果您只是在 SSH 会话中输入 umask 命令,则更改将仅在此会话中持续存在,并且仅影响稍后从此 SSH 会话启动的进程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2016-05-27
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 2023-01-11
相关资源
最近更新 更多