Я пытаюсь создать каталог с общедоступными правами на запись. Чтобы упростить вещи, я хочу, чтобы у нее были разрешения 777
. Вот мой код:Java - не удалось создать каталог с разрешением 777 (вместо него было 775)
private static FileAttribute<Set<PosixFilePermission>> DIR_PERMISSIONS;
static {
Set<PosixFilePermission> perms = new HashSet<>();
perms.add(PosixFilePermission.OWNER_WRITE);
perms.add(PosixFilePermission.OWNER_READ);
perms.add(PosixFilePermission.OWNER_EXECUTE);
perms.add(PosixFilePermission.GROUP_WRITE);
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.GROUP_EXECUTE);
perms.add(PosixFilePermission.OTHERS_WRITE);
perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.OTHERS_EXECUTE);
DIR_PERMISSIONS = PosixFilePermissions.asFileAttribute(perms);
}
private Path ensurePath(LocalDate localDate) throws IOException {
String year = String.valueOf(localDate.getYear());
String month = String.format("%02d", localDate.getMonthValue());
Path path = Paths.get(rootDirectory, year, month);
return Files.createDirectories(path, DIR_PERMISSIONS);
}
С rootDirectory=/tmp/data
это должно создавать папки как /tmp/data/2016/01
, каждый с 777
разрешения. Вместо этого папки имеют разрешения 775
(drwxrwxr-x.), Поэтому им не хватает публичной записи. Почему это работает так? Возможно, JVM нуждается в специальном параметре, чтобы иметь возможность устанавливать такие разрешения? Моя система Fedora 24, приложение стандартное приложение Spring Boot, запущенное плагином maven.
@ OlivierGrégoire Это не дубликат, потому что это не объясняет * почему * это выходит как 775. – Michael
@Michael Основная часть вопроса здесь «Я не могу», а не «почему». Принятый ответ в другой теме завершен, как исправить это. –
@ OlivierGrégoire «** Почему ** это работает так?» – Michael