Módulo de Powershell para la gestión de los permisos del sistema de ficheros

Hasta el momento el manejo de permisos NTFS de ficheros con los commandlets de Powershell es bastante enrevesado debido a que los permisos de windows son de por sí complicados de manejar.

Para configurar estos permisos de manera bastante más sencilla y eficiente tenemos la posibilidad de descargar e instalar un módulo llamado System Security Powershell Module. Se puede descargar e importar para versiones inferiores de Windows Server 2016 o bien si Tenemos Windows Server 2016 está incluido en WMF 5.0 (Windows Management Framework).

 

Para el caso de que Dicho modulo se deba descargar debemos copiar el contenido del mismo descomprimido en la ruta

%Windir%\System32\WindowsPowerShell\v1.0\Modules

Verificamos su disponibilidad mediante:

Get-Module -ListAvailable

Suponiendo que el módulo aparezca en la lista se debe importar mediante:

Import-Module NTFSSecurity

 

Este módulo proporciona nuevos commandlets para gestionar los permisos del sistema de ficheros, añadir y quitar ACE’s (entradas de control de acceso), administrar la herencia, obtener los permisos actuales de un usuario o incluso obtener los permisos efectivos del mismo.

Ahora la asignación de permisos se puede hacer en una sola línea.  Ej.:

 

Get-NTFSAccess -path C:\carpeta

Este comando muestra que usuario o grupos tienen acceso a dicha carpeta y el tipo de acceso que tienen.

 

Add-NTFSAccess -path c:\carpeta -account    sistemas1 -AccessRights  FullControl

 

Este comando crearía una ACE asignando al usuario sistemas1 control total a c:\carpeta

Para eliminar permisos NTFS usamos Remove-NTFSAccess se debe especificar la ruta de acceso, el nombre de cuenta y los derechos que desea eliminar. Por ejemplo, si queremos quitar el permiso FullControl  a sistemas 1, podemos utilizar la siguientes expresión

Remove-NTFSAccess -path C: \Carpeta   -Sistemas1    -AccessRights FullControl

 

Los permisos que se quieren borrar para Sistemas1 deben ser los que tienen realmente, si explicitamos otros tipos de permisos distintos a los que realmente tiene el comando no hará nada.  Para evitar tener problema con esto podemos utilizar las redirecciones (pipe)

El comando quedaría entonces así:

Get-NTFSAccess -path C: \carpeta   -Sistemas1 | Remove-NTFSAccess

 

De esta manera estaríamos quitando el permiso que tuviera sistemas1 sobre la carpeta.

 

Hay muchos más cmdlets que facilitan el tratamiento de los permisos NTFS (Add-Ace,Get-Ace…)

 

Además en WS2016  WMF 5.0 incluye también otro modulo llamado ACLReportTools que utiliza el modulo anterior y hace  reportes de las ACL’s de ficheros carpetas y carpetas compartidas comparándolos con versiones anteriores de los mismos objetos. Esto es útil para el administrador para saber cuánto han cambiado las ACL’s.

 

Luis Fernando Sanchez Rodriguez

Alumno del curso Microsoft MCSA/MCSE

Centro: Tajamar

Año académico: 2016-2017