如何更改从Wildfly中部署的Java Web应用程序创建的文件所有者?

时间:2019-05-16 19:15:05

标签: java permissions wildfly libreoffice

我正在用Java开发Web应用程序,将其部署在Wildfly 15中。Wildfly与特定用户(wildfly或jboss)一起运行,该应用程序将创建文件(.docx),例如:在特定目录中的stuff.docx / opt / documents,此目录将登录到其他用户(大声笑)。

用户“ lool”运行另一个应用程序(loolwsd LibreOffice Web)来编辑文本,但是对权限有严格的要求,并且必须是文件的所有者。我已将wildfly用户添加到编辑器组,并将目录和文件中的组权限更改为775,但是编辑器无法正确执行。

我尝试使用Java NIO更改所有者,但抛出“不允许操作”

示例:

Path path = Paths.get(sPath);
FileOwnerAttributeView foav = Files.getFileAttributeView(path, FileOwnerAttributeView.class);

UserPrincipal owner = foav.getOwner();
logger.info("Original owner  of  " + path + "  is " + owner.getName());

FileSystem fs = FileSystems.getDefault();
UserPrincipalLookupService upls = fs.getUserPrincipalLookupService();

UserPrincipal newOwner = upls.lookupPrincipalByName("lool");
foav.setOwner(newOwner);

UserPrincipal changedOwner = foav.getOwner();
logger.info("New owner  of " + path + " is %s%n" + changedOwner.getName());

当我从Wildfly创建文件(由wildfly创建)时,我希望在此过程之后将用户更改为编辑用户。如何安全地从Java(在Wildfly中)更改文件用户所有者?

1 个答案:

答案 0 :(得分:0)

我认为您可以在文件系统上启用ACL并使用setfacl命令将权限授予其他用户

类似这样的东西:

setfacl -m d:g:<groupname here>:rwx /shome/path

d-是默认规则。此文件夹中的所有新内容都将具有此权限。

g-组