问题:我正在寻找一种方法来配置 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 级别执行此操作。