H2 Embedded db необходимо изменить разрешение файла базы данных h2db.mv.db на java - PullRequest
2 голосов
/ 16 апреля 2020

Можем ли мы изменить разрешение файла h2db.mv.db . Прямо сейчас он установлен на 664, нужно изменить код с 770 на java.

1 Ответ

0 голосов
/ 20 апреля 2020

Чтобы изменить разрешения существующего файла, вы можете использовать

Path p = Paths.get("/path/to/h2db.mv.db");
Files.setPosixFilePermissions(p, PosixFilePermissions.fromString("rwxrwx---"));

, где /path/to/h2db.mv.db - абсолютный или относительный путь к вашему файлу.

770, однако, не должен использоваться для база данных, файл базы данных не является ни каталогом, ни исполняемым файлом. Возможно, вы имели в виду 660, для этого используйте PosixFilePermissions.fromString("rw-rw----").


Если вы хотите указать начальные разрешения, используя только код Java, вам нужно создать новый пустой файл с этими разрешениями до создания базы данных:

Path p = Paths.get("/path/to/h2db.mv.db");
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rw-rw----");
if (Files.notExists(p)) {
    Files.createFile(p, PosixFilePermissions.asFileAttribute(perms));
}
// Some permissions may be removed by umask during file creation, so
// they need to be set again
Files.setPosixFilePermissions(p, perms);
Connection c = DriverManager.getConnection("jdbc:h2:/path/to/h2db");

Было бы более разумно установить umask процесса вместо 0007 (из кода оболочки , например, с umask 0007). С такими umask новые файлы будут иметь разрешения 660, новые исполняемые файлы и каталоги будут иметь разрешения 770.

...