Administrar permisos NTFS mediante PowerShell

Marion Paul Kenneth Mendoza 15 febrero 2024
  1. Ver permisos NTFS con Get-ACL en PowerShell
  2. Mostrar permisos NTFS en PowerShell
  3. Obtener ACL en archivos de forma recursiva en PowerShell
Administrar permisos NTFS mediante PowerShell

Administrar permisos NTFS con una GUI lleva mucho tiempo, especialmente cuando se trabaja con muchos usuarios o grupos. Sin embargo, los cmdlets específicos de PowerShell pueden recuperar y asignar permisos NTFS.

Este artículo discutirá la administración de permisos NTFS con el comando Get-ACL.

Ver permisos NTFS con Get-ACL en PowerShell

Una lista de control de acceso (o ACL) es una lista de entradas de control de acceso (ACE) en la que cada lista contiene una ACE que identifica a un administrador y especifica los derechos de acceso.

El descriptor de seguridad de un objeto asegurable puede ser de dos tipos: DACL o SACL. Una DACL identifica a los usuarios y grupos a los que se les permite o deniega el acceso, mientras que una SACL controla el acceso.

PowerShell nos permite ver rápidamente los permisos de NTFS usando el cmdlet Get-ACL. Aprenderemos a usar el cmdlet para ver los permisos NTFS para un archivo o carpeta en las siguientes secciones.

Mostrar permisos NTFS en PowerShell

Tradicionalmente, veríamos una ACL haciendo clic derecho en una carpeta, haciendo clic en Propiedades, seleccionando la pestaña Seguridad y haciendo clic en el botón Avanzado. Podemos ver un ejemplo de cómo la GUI muestra los permisos a continuación.

ACL usando la configuración de seguridad avanzada

Los siguientes ejemplos en este artículo asignan una ruta a la variable $dir.

Código de ejemplo:

$dir = "C:\Windows\Temp"
Get-Acl -Path $dir

Producción :

Path Owner                      Access
---- -----                      ------
Temp DESKTOP-7GI1260\KentMarion BUILTIN\Administrators Allow  FullControl...

Sin embargo, ejecutar el comando Get-Acl con el parámetro -Path solo mostrará y generará la Lista de control de acceso en el nivel de carpeta. ¿Qué pasaría si quisiéramos verificar la Lista de control de acceso a nivel de archivo?

Obtener ACL en archivos de forma recursiva en PowerShell

Una de las funciones ventajosas de PowerShell es el uso de Pipeline. Las canalizaciones de PowerShell combinan una serie de varios comandos mediante un operador de canalización (|).

Podemos usar el método de tubería para obtener la Lista de control de acceso en el nivel de archivo.

Necesitamos usar el comando Get-ChildItem para lograr este escenario. El comando Get-ChildItem recupera todos los archivos y carpetas dentro de un directorio.

Usemos nuestra variable anterior $dir como ejemplo.

Código de ejemplo:

$dir = "C:\Windows\Temp"
Get-ChildItem $dir -Recurse | Get-Acl | Format-List | Out-File "C:\PS\output.txt"

En el ejemplo anterior, el parámetro de cambio -Recurse es importante para recorrer todos los archivos y ejecutar el comando Get-Acl. Al hacer el fragmento anterior, podremos obtener todos los permisos de la lista de control de acceso de todos los archivos en la carpeta Temp.

También se sugiere utilizar el comando Out-File para exportar todos los detalles en un archivo de texto, especialmente si tiene muchos archivos en la carpeta de destino.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn