访问文件权限

时间:2015-08-06 05:33:17

标签: java wildfly-8 file-access

我们有一个Java bean通过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 个答案:

答案 0 :(得分:0)

对我而言,看起来应该

  • 查看他从其所属的群组继承的用户权限
  • 或检查文件是否被其他进程(Virusscaner等)独占锁定
  • 或比较可访问/不可访问的文件的ACL

根据您发布的ACL我会说......

如果用户尝试访问使用本地用户帐户(BUILTIN \ Benutzer)登录的同一台PC上的文件,则他拥有修改该文件的所有相应权限。

如果用户尝试从使用域用户帐户(NT AUTHORITY \ Authenticated Users)登录的远程PC访问该文件,则他也有权修改该文件。

对我来说没问题。