当文件由不同进程写入/读取时 Linux 的权限

当文件由不同进程写入/读取时 Linux 的权限

我有一个通过 Tomcat 部署的 Web 应用程序,允许在目录中上传文件。这些文件由 Tomcat 及其所有者和权限files上传。我需要维护该组,因为其他用户出于管理目的需要它。tomcat:tomcat640tomcat

在下载方面,我有一个 Nginx 为用户提供文件。

问题是 Nginx 无法访问上传的文件,因为它使用了用户www-data:www-data

  • 出于安全原因,我无法加入www-data该群组。tomcat
  • 我无法用tomee组代替www-data,因为我需要组 tomee,而我不能让 tomee 创建 www-data组下的所有文件(例如,tomee 会在 下创建日志 tomee:www-data,这是不受欢迎的 - 在任何情况下只有上传才会有这种情况)
  • 出于安全原因,我不能others授予对文件的任何权限。无论如何,我都无法更改默认的640Tomcat 掩码,因为(Tomcat 设计不好?)它会影响 Tomcat 创建的每个文件。
  • 我可以使用chmod g+s,但这似乎不会递归地影响文件(Tomcat 还会创建目录,然后上传文件)

我该如何解决这个问题?

答案1

我想我已经解决了它,但在接受解决方案之前需要做更多的测试。

  • sudo apt install acl (基于 Ubuntu)
  • sudo chown tomcat:www-data files
  • sudo chmod g+s files
  • sudo setfacl -Rm d:g:www-data:r files

相关内容