如何为 Java 设置默认文件权限
How to set default file permissions for Java
问题:我正在寻找一种方法来配置 Java 以默认创建具有特定权限集的新文件。
问题:我有一个 Spring 启动应用程序,它使用以下内容:
- 用于日志记录的 Log4J2
- 平面文件数据库的 H2
- 用于缓存实体的 Ehcache
所有这些库都在本地文件系统上创建新文件,当它们创建时,它们会生成世界可写的文件(666 个文件和 777 个目录)。我在 macOS 10.13(用户有 "umask 0022")和亚马逊 Linux(用户有 "umask 0002")上看到过这个。
如果我直接管理文件的创建,我可以用 PosixFilePermission 做我需要的,但由于文件创建委托给库,我没有那个机会。我可能会设置一个计时器来发现新文件并直接设置权限,但我并不喜欢这种方法。
Log4J2 v2.9 向 RollingFileAppender 添加了一个 filePermissions 字段,所以我对我的问题之一抱有希望,但我无法为 H2 或 Ehcache 找到类似的东西。理想情况下,为了简单和面向未来,我想在 JVM/Boot 级别执行此操作。
这是 tomcat 的 和 umask。似乎 tomcat 有它自己的处理 umask 的行为。
那么也许有一种方法可以配置 tomcat 的 'umask behavior' 嵌入到 Spring 引导中?比如属性什么的。
我不能假装这是一个答案。但遗憾的是,我没有足够的声誉来评论你的问题。希望对您有所帮助。
原来这是一条红鲱鱼。问题不在于 java,而在于启动 java 进程的 YAJSW 服务包装器。 YAJSW has several parameters 用于设置 umask,包括子进程,但尚未实现。在 YAJSW 之外启动应用程序会生成符合用户 umask 的文件。
问题:我正在寻找一种方法来配置 Java 以默认创建具有特定权限集的新文件。
问题:我有一个 Spring 启动应用程序,它使用以下内容:
- 用于日志记录的 Log4J2
- 平面文件数据库的 H2
- 用于缓存实体的 Ehcache
所有这些库都在本地文件系统上创建新文件,当它们创建时,它们会生成世界可写的文件(666 个文件和 777 个目录)。我在 macOS 10.13(用户有 "umask 0022")和亚马逊 Linux(用户有 "umask 0002")上看到过这个。
如果我直接管理文件的创建,我可以用 PosixFilePermission 做我需要的,但由于文件创建委托给库,我没有那个机会。我可能会设置一个计时器来发现新文件并直接设置权限,但我并不喜欢这种方法。
Log4J2 v2.9 向 RollingFileAppender 添加了一个 filePermissions 字段,所以我对我的问题之一抱有希望,但我无法为 H2 或 Ehcache 找到类似的东西。理想情况下,为了简单和面向未来,我想在 JVM/Boot 级别执行此操作。
这是 tomcat 的
那么也许有一种方法可以配置 tomcat 的 'umask behavior' 嵌入到 Spring 引导中?比如属性什么的。
我不能假装这是一个答案。但遗憾的是,我没有足够的声誉来评论你的问题。希望对您有所帮助。
原来这是一条红鲱鱼。问题不在于 java,而在于启动 java 进程的 YAJSW 服务包装器。 YAJSW has several parameters 用于设置 umask,包括子进程,但尚未实现。在 YAJSW 之外启动应用程序会生成符合用户 umask 的文件。