跳轉到內容

XQuery/更改集合和資源的許可權

來自華夏公益教科書,開放的世界中的開放書籍

您想要更改一組集合和資源的許可權。

我們將使用兩個函式

對於集合

  xmldb:chmod-collection($collection, $perm)

以及對於資源

   xmldb:chmod-resource($collection, $resource, $perm)

$perm 是一個十進位制數字。

從 1.5 版開始,您可以使用函式 xmldb:string-to-permissions("rwurwu---") 來獲取這個十進位制數字。

獲取訪客許可權的十進位制值的示例

[編輯 | 編輯原始碼]
xquery version "1.0";
<results>
    <guest-none>{xmldb:string-to-permissions("rwxrwx---")}</guest-none>
    <guest-read>{xmldb:string-to-permissions("rwxrwxr--")}</guest-read>
    <guest-read-write>{xmldb:string-to-permissions("rwxrwxrw-")}</guest-read-write>
    <guest-all>{xmldb:string-to-permissions("rwxrwxrwx")}</guest-all>
</results>

返回以下內容

<results>
   <guest-none>504</guest-none>
   <guest-read>508</guest-read>
   <guest-read-write>510</guest-read-write>
   <guest-all>511</guest-all>
</results>

刪除所有訪客許可權的遞迴指令碼

[編輯 | 編輯原始碼]
xquery version "1.0";

declare function local:chmod-collection($collection) {
   xmldb:chmod-collection(
      $collection,
      xmldb:string-to-permissions("rwxrwx---")),
     for $child in xmldb:get-child-collections($collection)
     return
       local:chmod-collection(concat($collection, "/", $child))
};

system:as-user(
   'my-login', 
   'password', 
   (
   local:chmod-collection("/db/collection"),
   for $doc in collection("/db/collection")
   return
       xmldb:chmod-resource(util:collection-name($doc),
       util:document-name($doc),
       xmldb:string-to-permissions("rwxrwx---"))
   )
)

警告,這會破壞幾個功能。您必須以非訪客身份執行許多函式。

華夏公益教科書