如何为Java

时间:2018-03-15 23:30:38

标签: java yajsw

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

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

  • Log4J2用于记录
  • H2 for flat file databases
  • 缓存实体的Ehcache

所有这些库都在本地文件系统上创建新文件,当它们执行时,它们会生成世界可写文件(文件为666,目录为777)。我在macOS 10.13(用户有“umask 0022”)和Amazon Linux(用户有“umask 0002”)上看过这个。

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

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

2 个答案:

答案 0 :(得分:1)

这是tomcat和umask的a topic。似乎tomcat有自己处理umask的行为。

那么也许有一种方法可以配置嵌入在Spring Boot中的tomcat的'umask行为'?喜欢属性或其他东西。

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

答案 1 :(得分:0)

原来这是一只红鲱鱼。问题不在于java,而是在启动java进程的YAJSW服务包装器上。 YAJSW has several parameters用于设置umask,包括子进程,但它们尚未实现。在YAJSW之外启动应用程序会生成遵循用户umask的文件。