1

问题:我正在寻找一种方法来配置 Java 以默认创建具有特定权限集的新文件。

问题:我有一个使用以下内容的 Spring Boot 应用程序:

  • Log4J2 用于记录
  • H2 用于平面文件数据库
  • 用于缓存实体的 Ehcache

所有这些库都在本地文件系统上创建新文件,并且当它们这样做时,它们会生成全局可写文件(文件为 666,目录为 777)。我在 macOS 10.13(用户拥有“umask 0022”)和 Amazon Linux(用户拥有“umask 0002”)上看到了这一点。

如果我直接管理文件的创建,我可以使用PosixFilePermission做我需要的事情,但是由于文件创建被委托给库,我没有这个机会。我可能会设置一个计时器来发现新文件并直接设置权限,但我并不喜欢这种方法。

Log4J2 v2.9 向RollingFileAppender添加了一个 filePermissions 字段,所以我对我的问题之一抱有希望,但我无法为 H2 或 Ehcache 找到类似的东西。理想情况下,为了简单和面向未来,我想在 JVM/Boot 级别执行此操作。

4

2 回答 2

1

这里有一个关于tomcat和umask的话题。似乎tomcat有自己的行为来处理umask。

那么也许有一种方法可以配置嵌入在 Spring Boot 中的 tomcat 的“umask 行为”?比如属性什么的。

我不能假装这是一个答案。但遗憾的是,我没有足够的声誉来评论您的问题。希望这会对您有所帮助。

于 2018-03-16T06:58:05.520 回答
0

原来这是一条红鲱鱼。问题不在于 java,而在于启动 java 进程的 YAJSW 服务包装器。YAJSW有几个用于设置 umask 的参数,包括在子进程上,但它们还没有实现。在 YAJSW 之外启动应用程序会生成服从用户 umask 的文件。

于 2018-03-16T16:49:08.113 回答