Права доступа к файлам

У нас есть Java-бин, пишущий файлы через Files.write в папку данных Wildfly, и по какой-либо причине новый файл иногда получает совершенно неправильные права доступа и не может быть прочитан кем-либо.

Мне не удалось воспроизвести эту ошибку, я просто догадываюсь, что происходит, и знаю большинство проблем только по слухам.

Мы попытались установить владельца нового файла таким образом, полагая, что если его владельцем был сервер, ошибка исчезнет:

Path newFile = ...
Path dir = Paths.get(System.getProperty("user.home"));
UserPrincipal user = Files.getOwner(dir);
Files.setOwner(newFile, user);

Это иногда проросло AccessDeniedException,

Затем мы попытались установить привилегии напрямую:

File file = newFile.toFile();
file.setReadable(true, false);
file.setWritable(true, false);
file.setExecutable(true, false);

Это ничего не сделал вообще.

Наконец, мы попытались установить ACL следующим образом:

Path folder = Paths.get(jbossDataDir);
AclFileAttributeView folderAttributes = Files.getFileAttributeView(folder, AclFileAttributeView.class);

AclFileAttributeView fileAttributes = Files.getFileAttributeView(newFile, AclFileAttributeView.class);
fileAttributes.setAcl(folderAttributes.getAcl());

Но, как и раньше, иногда никто не может получить доступ к файлу больше. Разбитые файлы имеют следующие разрешения (что бы это ни значило) и не могут быть открыты двойным щелчком:

BUILTIN\Administratoren:(F)
BUILTIN\Administratoren:(OI)(CI)(IO)
NT AUTHORITY\SYSTEM:(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)
NT AUTHORITY\Authenticated Users:(M)
NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(DE)
BUILTIN\Benutzer:(RX)
BUILTIN\Benutzer:(OI)(CI)(IO)

И папка данных JBoss имеет следующие разрешения:

Everyone:(OI)(CI)(M)
BUILTIN\Benutzer:(OI)(CI)(M)
Everyone:(I)(OI)(CI)(M)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Administratoren:(I)(OI)(CI)(F)
BUILTIN\Benutzer:(I)(OI)(CI)(RX)
BUILTIN\Benutzer:(I)(CI)(AD)
BUILTIN\Benutzer:(I)(CI)(WD)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)

На данный момент я благодарен за все, даже если это "просто" возможность воспроизвести оригинальную ошибку. У кого-нибудь есть идеи?

1 ответ

Для меня это выглядит как вы должны

  • либо просмотрите права пользователя, которые он унаследовал от групп, членами которых он является
  • или проверьте, заблокирован ли файл исключительно другим процессом (Virusscaner и т. д.)
  • или сравните ACL для файлов, которые доступны / недоступны

Основываясь на ваших опубликованных ACL, я бы сказал...

Если пользователь пытается получить доступ к файлу на том же компьютере, который вошел в систему с локальной учетной записью пользователя (BUILTIN\Benutzer), он имеет все необходимые права для изменения файла.

Если пользователь пытается получить доступ к файлу с удаленного ПК, вошедшего в систему с учетной записью пользователя домена (NT AUTHORITY\Authenticated Users), он также имеет все необходимые права для изменения файла.

Что выглядит нормально для меня.

Другие вопросы по тегам