{"id":260342,"date":"2024-05-24T12:03:05","date_gmt":"2024-05-24T12:03:05","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=260342"},"modified":"2024-05-24T12:03:42","modified_gmt":"2024-05-24T12:03:42","slug":"establecer-permisos-de-carpeta","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/es\/script-hub\/establecer-permisos-de-carpeta\/","title":{"rendered":"C\u00f3mo establecer permisos de carpeta con PowerShell"},"content":{"rendered":"<p>Garantizar que las personas adecuadas tengan el acceso apropiado a archivos y carpetas espec\u00edficos es primordial en TI. La gesti\u00f3n de permisos protege eficazmente los datos confidenciales, contribuye al cumplimiento de la normativa y mejora <a href=\"https:\/\/www.ninjaone.com\/es\/eficiencia\/\">la eficacia operativa<\/a>. Una herramienta popular para gestionar este tipo de tareas es PowerShell, y hoy, nos sumergimos en profundidad en un script que agiliza el proceso de <strong>modificaci\u00f3n de permisos de carpeta.\u00a0<\/strong><\/p>\n<h2>Antecedentes<\/h2>\n<p>En un panorama digital en constante evoluci\u00f3n, los profesionales de TI y los proveedores de servicios gestionados (MSP) hacen malabarismos constantemente con m\u00faltiples permisos de usuario en varios archivos y carpetas. El script proporcionado es un regalo del cielo en estos casos. Ofrece flexibilidad, ya que permite asignar o bloquear permisos a varios usuarios en varias rutas. Esto significa que, tanto si trabajas con archivos individuales como con directorios enteros, este script te cubre todas las necesidades.<\/p>\n<h2>El script para establecer permisos de carpeta<\/h2>\n<p><div class=\"button-wrap orange-button \"><a href=\"#disable-fast-startup\" data-js=\"button-script-cta\" class=\"button script-cta\" data-js=\"script-cta\"  data-modal=\"249414\" >Email me the script<\/a><\/div><br \/>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Modify User Permissions for files and folder.\r\n.DESCRIPTION\r\n    Modify User Permissions for files and folder. You can assign or block multiple permissions to multiple users, and multiple files and folders.\r\n.EXAMPLE\r\n     -User \"Test\" -Path \"C:Test\" -Permissions FullControl\r\n    Gives FullControl permissions to the user Test for just the folder C:Test\r\n.EXAMPLE\r\n     -User \"Test1\", \"Test2\" -Path \"C:Test\" -Permissions FullControl\r\n    Gives FullControl permissions to the user Test1 and Test2 for just the folder C:Test\r\n.EXAMPLE\r\n     -User \"Test1\", \"Test2\" -Path \"C:Test\", \"C:Temp\" -Permissions FullControl\r\n    Gives FullControl permissions to the user Test1 and Test2 for just the folders C:Test and C:Temp\r\n.EXAMPLE\r\n     -User \"Test\" -Path \"C:TestDocument.docx\" -Permissions FullControl\r\n    Gives FullControl permissions to the user Test for just the file C:TestDocument.docx\r\n.EXAMPLE\r\n     -User \"Test\" -Path \"C:TestDocument.docx\" -Permissions ReadData, Modify\r\n    Gives ReadData and Modify permissions to the user Test for just the file C:TestDocument.docx\r\n.EXAMPLE\r\n     -User \"Test\" -Path \"C:TestDocument.docx\" -Permissions FullControl -Block\r\n    Blocks FullControl permissions from the user Test for just the file C:TestDocument.docx\r\n.EXAMPLE\r\n     -User \"Test\" -Path \"C:Test\" -Permissions FullControl -Recursive\r\n    Gives FullControl permissions to the user Test for the folder C:Test and any folder or file under it will inherit FullControl\r\n.EXAMPLE\r\n    PS C:&gt; .Modify-User-Permissions.ps1 -User \"Test\" -Path \"C:Test\" -Permissions FullControl -Recursive\r\n    Gives FullControl permissions to the user Test for the folder C:Test and any folder or file under it will inherit FullControl\r\n.INPUTS\r\n    Inputs (User,Path,Permissions)\r\n.OUTPUTS\r\n    FileSecurity\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes:\r\n    Initial Release\r\nBy using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n    Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n.COMPONENT\r\n    ManageUsers\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    [Parameter(Mandatory = $true)]\r\n    [ValidateScript(\r\n        {\r\n            # Validate that the User(s) exist\r\n            if ($(Get-LocalUser -Name $_)) { $true } else { $false }\r\n        }\r\n    )]\r\n    [String[]]\r\n    # The user name of the user you want to apply Permissions to a Path(s)\r\n    $User,\r\n    [Parameter(Mandatory = $true)]\r\n    [ValidateScript({ Test-Path -Path $_ })]\r\n    [String[]]\r\n    # File path that you want to apply Permissions to\r\n    $Path,\r\n    [Parameter(Mandatory = $true)]\r\n    # Permission to set the path(s) for the user(s)\r\n    # This accepts the following:\r\n    #  ListDirectory, ReadData, WriteData, CreateFiles, CreateDirectories, AppendData, ReadExtendedAttributes,\r\n    #  WriteExtendedAttributes, Traverse, ExecuteFile, DeleteSubdirectoriesAndFiles, ReadAttributes,\r\n    #  WriteAttributes, Write, Delete, ReadPermissions, Read, ReadAndExecute, Modify, ChangePermissions,\r\n    #  TakeOwnership, Synchronize, FullControl\r\n    [System.Security.AccessControl.FileSystemRights[]]\r\n    $Permissions,\r\n    # Block the specified Permissions for the specified $User\r\n    [Switch]\r\n    $Block,\r\n    # Apply the Permissions down through a folder structure, i.e. inheritance\r\n    [Switch]\r\n    $Recursive\r\n)\r\n\r\nbegin {\r\n    function Test-IsElevated {\r\n        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()\r\n        $p = New-Object System.Security.Principal.WindowsPrincipal($id)\r\n        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))\r\n        { Write-Output $true }\r\n        else\r\n        { Write-Output $false }\r\n    }\r\n}\r\n\r\nprocess {\r\n    if (-not (Test-IsElevated)) {\r\n        Write-Error -Message \"Access Denied. Please run with Administrator privileges.\"\r\n        exit 1\r\n    }\r\n    $Acl = Get-Acl -Path $Path\r\n    if ($true -in $Acl.AreAccessRulesProtected) {\r\n        Write-Error \"ACL rules are protected for one of the specified paths.\"\r\n        exit 1\r\n    }\r\n    $script:HasError = $false\r\n    $Path | ForEach-Object {\r\n        $CurPath = Get-Item -Path $_\r\n        $User | ForEach-Object {\r\n            $NewAcl = Get-Acl -Path $CurPath\r\n            # Set properties\r\n            $identity = Get-LocalUser -Name $_\r\n            $fileSystemRights = $Permissions\r\n            $type = $(if ($Block) { [System.Security.AccessControl.AccessControlType]::Deny }else { [System.Security.AccessControl.AccessControlType]::Allow })\r\n            $fileSystemRights | ForEach-Object {\r\n                # Create new rule\r\n                Write-Host \"Creating $type $_ rule for user: $identity\"\r\n                # Check if Recursive was used and that the current path is a folder\r\n                if ($CurPath.PSIsContainer -and $Recursive) {\r\n                    $inheritanceFlags = 'ObjectInherit,ContainerInherit'\r\n                    $NewAcl.SetAccessRuleProtection($false, $true)\r\n                }\r\n                else {\r\n                    $inheritanceFlags = [System.Security.AccessControl.InheritanceFlags]::None\r\n                }\r\n                $propagationFlags = [System.Security.AccessControl.PropagationFlags]::None\r\n                $fileSystemAccessRuleArgumentList = $identity, $_, $inheritanceFlags, $propagationFlags, $type\r\n                $fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList\r\n\r\n                # Apply new rule\r\n                $NewAcl.SetAccessRule($fileSystemAccessRule)\r\n                try {\r\n                    Set-Acl -Path $CurPath -AclObject $NewAcl -Passthru\r\n                }\r\n                catch {\r\n                    Write-Error $_\r\n                    $script:HasError = $true\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if ($script:HasError) {\r\n        exit 1\r\n    }\r\n}\r\n\r\nend {}<\/pre>\n<p>&nbsp;<\/p>\n<div class=\"button-wrap orange-button \"><a href=\"https:\/\/www.ninjaone.com\/get-started\/deploy-with-ninjaone\/\" data-js=\"button-script-deploy-cta\" class=\"button script-deploy-cta\">Deploy with NinjaOne<\/a><\/div><div class=\"in-context-cta\"><p style=\"text-align: center;\">Accede a m\u00e1s de 300 scripts en el Dojo de NinjaOne<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.ninjaone.com\/es\/prueba-gratuita-formulario\/\">Obt\u00e9n acceso<\/a><\/p>\n<\/div><\/p>\n<h2>An\u00e1lisis detallado<\/h2>\n<p>En esencia, el script funciona con tres par\u00e1metros obligatorios: <strong>User<\/strong>, <strong>Path<\/strong> y <strong>Permissions<\/strong>.<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>User:<\/strong> define el usuario de destino para el que se establecen los permisos. Este par\u00e1metro se somete a validaci\u00f3n para garantizar que el usuario existe.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Path:<\/strong> indica el fichero o directorio cuyos permisos deben modificarse. Se valida su existencia.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>Permissions:<\/strong> enumera los distintos tipos de permisos que se pueden establecer, desde <strong>FullControl<\/strong> hasta permisos espec\u00edficos como <strong>ReadData<\/strong>.<\/li>\n<\/ul>\n<p>El script tambi\u00e9n ofrece par\u00e1metros opcionales:<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Block<\/strong>: si se invoca, deniega los permisos especificados.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Recursive:<\/strong> si se especifica esta opci\u00f3n, los permisos se aplican seg\u00fan la estructura de carpeta, garantizando la herencia.<\/li>\n<\/ul>\n<p>Cuando se ejecuta, el script comprueba primero si se est\u00e1 ejecutando con privilegios administrativos. A continuaci\u00f3n, eval\u00faa cada ruta en funci\u00f3n de los permisos de usuario especificados, creando o modificando las reglas en consecuencia.<\/p>\n<h2>Posibles casos de uso<\/h2>\n<p>Imagina a una profesional de TI, Marta, encargada de supervisar un proyecto para su organizaci\u00f3n. Marta tiene una carpeta con los archivos del proyecto. A medida que avanza el proyecto, los distintos departamentos necesitan distintos niveles de acceso a estos archivos. Con el script, Marta puede asegurarse sin esfuerzo de que el departamento de RRHH s\u00f3lo pueda leer determinados documentos, mientras que los jefes de proyecto tienen pleno control sobre todos los archivos. Esta gesti\u00f3n eficaz garantiza el buen funcionamiento del proyecto al tiempo que mantiene la seguridad.<\/p>\n<h2>Comparaciones<\/h2>\n<p>Los m\u00e9todos tradicionales de configuraci\u00f3n de permisos de carpeta suelen implicar navegar por intrincadas interfaces GUI o emplear software de terceros. Aunque ofrecen informaci\u00f3n visual, pueden llevar mucho tiempo y ser menos eficaces cuando se trata de permisos masivos. El script PowerShell ofrece un enfoque m\u00e1s r\u00e1pido y directo. Resulta especialmente \u00fatil para los profesionales de TI familiarizados con la l\u00ednea de comandos, ya que permite realizar cambios r\u00e1pidos en los permisos mediante scripts.<\/p>\n<h2>FAQ<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>\u00bfCu\u00e1les son los requisitos del sistema operativo para este script?\u00a0<\/strong><br \/>\nEl script es compatible con Windows 10 y Windows Server 2016 y posteriores.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>\u00bfC\u00f3mo puedo asegurarme de que los permisos recursivos se aplican s\u00f3lo a las carpetas y no a los archivos individuales?\u00a0<\/strong><br \/>\nEl script comprueba autom\u00e1ticamente si la ruta es un contenedor (carpeta) y s\u00f3lo entonces aplica permisos recursivos.<\/li>\n<\/ul>\n<h2>Implicaciones<\/h2>\n<p>Una gesti\u00f3n eficaz de los permisos es fundamental para la seguridad de TI. Establecer un acceso demasiado permisivo puede exponer datos sensibles, mientras que los permisos restrictivos pueden obstaculizar los procesos de trabajo. Este script proporciona un delicado equilibrio, permitiendo un control preciso de los permisos. Sin embargo, los errores de configuraci\u00f3n pueden tener implicaciones no deseadas, por lo que siempre hay que comprobar dos veces la configuraci\u00f3n.<\/p>\n<h2>Recomendaciones<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\">Realiza siempre una prueba en un entorno controlado antes de desplegar el script ampliamente.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">Haz una copia de seguridad de la configuraci\u00f3n actual de permisos, as\u00ed contar\u00e1s con una red de seguridad en caso de errores.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Actualiza y audita peri\u00f3dicamente los permisos de los usuarios para mantener la seguridad y la eficacia operativa.<\/li>\n<\/ul>\n<h2>Reflexiones finales<\/h2>\n<p>En el mundo de la TI moderna, la gesti\u00f3n de los derechos de acceso a carpetas y archivos es un reto importante. Los scripts de PowerShell, como el que hemos analizado hoy, hacen que la tarea sea m\u00e1s manejable y eficiente. Para quienes buscan <a href=\"https:\/\/www.ninjaone.com\/es\/\">soluciones integradas de gesti\u00f3n de TI<\/a>, NinjaOne ofrece herramientas y capacidades s\u00f3lidas, que facilitan a\u00fan m\u00e1s las complejidades de la gesti\u00f3n de permisos. Tanto si te basas en scripts como en plataformas integrales como NinjaOne, el objetivo sigue siendo el mismo: operaciones de TI seguras, eficientes y simplificadas.<\/p>\n","protected":false},"author":35,"featured_media":144276,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4212],"use_cases":[4267],"class_list":["post-260342","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows","use_cases-gestion-de-usuarios-y-accesos"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub\/260342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/comments?post=260342"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media\/144276"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=260342"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/operating_system?post=260342"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/use_cases?post=260342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}