Establecimiento recursivo de permisos en carpetas mediante PowerShell

Rohan Timalsina 21 junio 2023
  1. Obtenga permisos en las carpetas de forma recursiva usando PowerShell
  2. Establecer permisos en carpetas de forma recursiva mediante PowerShell
Establecimiento recursivo de permisos en carpetas 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.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Artículo relacionado - PowerShell Folder