Establecimiento recursivo de permisos en carpetas mediante PowerShell
- Obtenga permisos en las carpetas de forma recursiva usando PowerShell
- Establecer permisos en carpetas de forma recursiva mediante PowerShell
Una ACL (lista de control de acceso) representa los permisos de los usuarios y los grupos de usuarios para acceder a un archivo o recurso. Es una lista ordenada de entradas de control de acceso (ACE).
Cada ACE en una ACL define los derechos de acceso permitidos, denegados o auditados. El descriptor de seguridad de un objeto puede tener dos tipos de ACL: DACL y SACL.
Cuando trabaje con permisos NTFS en Windows, es posible que deba cambiar recursivamente los permisos en las carpetas. Una GUI requeriría más tiempo y sería más compleja que un script de PowerShell.
Este tutorial le enseñará a establecer permisos recursivamente en carpetas usando PowerShell.
Obtenga permisos en las carpetas de forma recursiva usando PowerShell
Existen principalmente dos cmdlets para administrar los permisos de ACL en PowerShell: Get-Acl
y Set-Acl
.
El cmdlet Get-Acl
obtiene el descriptor de seguridad que contiene las listas de control de acceso (ACL) de un archivo o recurso.
El Get-Acl
obtiene el descriptor de seguridad del directorio C:\New
.
Get-Acl C:\New
Producción :
Directory: C:\
Path Owner Access
---- ----- ------
New DelftStack\rhntm BUILTIN\Administrators Allow FullControl...
El cmdlet Get-Acl
no devuelve todos los permisos de directorios y subdirectorios. Deberá usar el cmdlet Get-ChildItem
con el parámetro -Recurse
para obtener permisos de carpetas de forma recursiva.
Get-ChildItem "C:\pc" -Recurse | Get-ACL
Establecer permisos en carpetas de forma recursiva mediante PowerShell
El Set-Acl
cambia el descriptor de seguridad de un archivo o recurso. Aplica el descriptor de seguridad suministrado como valor del parámetro -AclObject
.
Los siguientes comandos copian los valores del descriptor de seguridad del directorio C:\New
al descriptor de seguridad del directorio C:\pc
.
$new = Get-Acl -Path "C:\New"
Set-Acl -Path "C:\pc" -AclObject $new
El primer comando obtiene el descriptor de seguridad del directorio C:\New
y lo almacena en la variable $new
. En el segundo comando, Set-Acl
cambia los valores en la ACL del directorio C:\New
a los valores en $new
.
La siguiente secuencia de comandos agrega la nueva regla ACL a los permisos existentes en la carpeta de forma recursiva.
$acl = Get-Acl -Path "C:\pc"
$ace = New-Object System.Security.Accesscontrol.FileSystemAccessRule ("testuser", "Read", "Allow")
$acl.AddAccessRule($ace)
Set-Acl -Path "C:\pc" -AclObject $acl
El primer comando obtiene las reglas de ACL existentes. El segundo comando crea una nueva FileSystemAccessRule
para aplicar.
El tercer comando agrega la nueva regla ACL a los permisos existentes en la carpeta. El cuarto comando usa Set-Acl
para aplicar la nueva ACL a la carpeta.
Puede ver los permisos de todos los usuarios con el siguiente comando.
(Get-ACL -Path "C:\pc").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType
Producción :
IdentityReference FileSystemRights AccessControlType
----------------- ---------------- -----------------
DelftStack\rhntm FullControl Allow
DelftStack\testuser Read, Synchronize Allow
Los administradores del sistema configuran los permisos NTFS para muchas carpetas y archivos mediante scripts para que el proceso sea más rápido y sencillo. Esperamos que este artículo le haya ayudado a comprender cómo establecer permisos en carpetas de forma recursiva mediante PowerShell.
Para obtener información detallada sobre los permisos de NTFS, escriba PowerShell, lea esta publicación.