Вопрос: я ищу способ настроить Java для создания новых файлов с определенным набором разрешений по умолчанию.
Проблема. У меня есть приложение Spring Boot, которое использует следующее:
- Log4J2 для ведения журнала
- H2 для баз данных с плоскими файлами
- Ehcache для кешированных сущностей
Все эти библиотеки создают новые файлы в локальной файловой системе, и когда они это делают, они создают файлы с возможностью записи для всех (666 для файлов и 777 для каталогов). Я видел это в macOS 10.13 (у пользователя «umask 0022») и на Amazon Linux (у пользователя «umask 0002»).
Если бы я непосредственно управлял созданием файлов, я мог бы делать то, что мне нужно, с PosixFilePermission, но поскольку создание файлов делегировано библиотекам, у меня нет такой возможности. Я потенциально мог бы установить таймер для обнаружения новых файлов и напрямую установить разрешения, но я не в восторге от такого подхода.
Log4J2 v2.9 добавил поле разрешений файла в RollingFileAppender , так что у меня есть надежда на одну из моих проблем, но я не могу найти что-то подобное для H2 или Ehcache. В идеале я хотел бы сделать это на уровне JVM/Boot для простоты и перспективности.