如何在eXist-db的备份/还原中维护自定义ACL

时间:2019-05-13 22:53:41

标签: xquery exist-db

我正在将数据库从eXist 2.2升级到4.5。 我使用Java Admin Client创建了整个eXist 2.2数据库的备份。我重新安装了eXist 4.5。

我将ZIP移到了上面并进行了恢复。

当我浏览数据库并进行检查时,我(至少对我而言)看到了一个明显的问题,因为我对具有某些组件访问权限的组广泛使用了ACL。

并排检查这些问题可以发现问题:

enter image description here

左侧是新服务器,右侧是旧服务器。 文件旁边用“ +”号表示的所有自定义ACL均已消失。 这仅发生在一个集合中,在该集合中,还原期间报告了一个无法设置权限的错误。

现在,在该集合中,只有大约40个文件需要自定义ACL,因此解决此问题不是一笔大买卖,但问题是我们为什么还是做错了什么?我会注意到许多其他文件夹都没有这个问题,并且所有权限都已设置。

根据问题进行更新:

好像缺少用户组...我想我知道为什么                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     2019-05-17 21:50:13,226 [java-admin-client-0.restore]错误(CollectionDeferredPermission.java [应用]:65)-错误:无法对Collection'/ db / EIDO / data / edit设置权限'。 org.xmldb.api.base.XMLDBException:无法调用类org.exist.xmlrpc.RpcConnection中的方法setPermissions:拒绝对“ / db / EIDO / data / edit”上的用户“ admin”进行修改的权限:用户组组名“ NA_Territory”的名称未知。     在org.exist.xmldb.RemoteUserManagementService.setPermissions(RemoteUserManagementService.java:187)〜[exist.jar:4.5.0]     在org.exist.backup.restore.CollectionDeferredPermission.apply(CollectionDeferredPermission.java:56)〜[exist.jar:4.5.0]     在org.exist.backup.restore.RestoreHandler.setDeferredPermissions(RestoreHandler.java:465)〜[exist.jar:4.5.0]     在org.exist.backup.restore.RestoreHandler.endElement(RestoreHandler.java:137)〜[exist.jar:4.5.0]     在org.apache.xerces.parsers.AbstractSAXParser.endElement(未知来源)〜[xercesImpl-2.11.0.jar :?]     在org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement处(未知

1 个答案:

答案 0 :(得分:1)

因此,如果要还原的备份不包含安全性集合(/ db / system / security / exist),并且备份中的其他资源取决于在其中定义的用户/组,而这些用户/组在要将备份导入到的服务器,那么您将看到此类错误。

您应该在备份中包括安全性集合,或者仅包括还需要备份和还原的用户/组。