Cómo administrar las ACL del sistema de archivos con Scripts de PowerShell

Tipos de permisos NTFS para Archivos y carpetas

Hay permisos NTFS básicos y avanzados. Puede establecer cada uno de los permisos en «Permitir » o»Denegar». Estos son los permisos básicos: Control total: Los usuarios pueden modificar, agregar, mover y eliminar archivos y directorios, así como sus propiedades asociadas. Además, los usuarios pueden cambiar la configuración de permisos para todos los archivos y subdirectorios.

  • Modificar: Los usuarios pueden ver y modificar archivos y propiedades de archivo, incluida la eliminación y adición de archivos a un directorio o propiedades de archivo a un archivo.
  • Leer & Ejecutar: Los usuarios pueden ejecutar archivos ejecutables, incluido script
  • Leer: Los usuarios pueden ver archivos, propiedades de archivos y directorios.
  • Write: Los usuarios pueden escribir en un archivo y agregar archivos a directorios.
  • Aquí está la lista de permisos avanzados:

    • Recorrer Carpeta/Ejecutar Archivo: Los usuarios pueden navegar por las carpetas para llegar a otros archivos o carpetas, incluso si no tienen permisos para estos archivos o carpetas. Los usuarios también pueden ejecutar archivos ejecutables. El permiso de Carpeta Transversal solo surte efecto cuando el grupo o el usuario no tiene la opción «Omitir la comprobación Transversal» directamente en el complemento Directiva de grupo.
    • Lista de carpetas/Lectura de datos: Los usuarios pueden ver una lista de archivos y subcarpetas dentro de la carpeta, así como el contenido de los archivos.
    • Atributos de lectura: Los usuarios pueden ver los atributos de un archivo o carpeta, como si es de solo lectura u oculto.
    • Atributos de escritura: Los usuarios pueden cambiar los atributos de un archivo o carpeta.
    • Leer atributos extendidos: Los usuarios pueden ver los atributos extendidos de un archivo o carpeta, como permisos y tiempos de creación y modificación.
    • Escribir Atributos Extendidos: los Usuarios pueden cambiar los atributos extendidos de un archivo o carpeta.
    • Crear archivos / Escribir datos: El permiso «Crear archivos» permite a los usuarios crear archivos dentro de la carpeta. (Este permiso se aplica solo a las carpetas.) El permiso «Escribir datos» permite a los usuarios realizar cambios en el archivo y sobrescribir el contenido existente. (Este permiso se aplica solo a archivos.)
    • Crear carpetas / Anexar datos: El permiso «Crear carpetas» permite a los usuarios crear carpetas dentro de una carpeta. (Este permiso se aplica solo a las carpetas.) El permiso «Anexar datos» permite a los usuarios realizar cambios al final del archivo, pero no pueden cambiar, eliminar o sobrescribir los datos existentes. (Este permiso se aplica solo a archivos.)
    • Eliminar: Los usuarios pueden eliminar el archivo o la carpeta. (Si los usuarios no tienen el permiso «Eliminar» en un archivo o carpeta, pueden eliminarlo si tienen el permiso «Eliminar Subcarpetas y Archivos» en la carpeta principal.)
    • Permisos de lectura: Los usuarios pueden leer los permisos de un archivo o carpeta, como «Control total», «Lectura» y «Escritura».
    • Cambiar permisos: Los usuarios pueden cambiar los permisos de un archivo o carpeta.
    • Tomar posesión: Los usuarios pueden tomar posesión del archivo o carpeta. El propietario de un archivo o carpeta siempre puede cambiar los permisos en él, independientemente de los permisos existentes que protejan el archivo o la carpeta.
    • Sincronizar: Los usuarios pueden usar el objeto para la sincronización. Esto permite que un hilo espere hasta que el objeto esté en el estado señalado. Este derecho no se presenta en el Editor de ACL. Puedes leer más al respecto aquí.

    Puede encontrar todos estos permisos de usuario ejecutando el siguiente script de PowerShell:

    ::getnames()

    Los permisos NTFS pueden ser explícitos o heredados. Los permisos explícitos son permisos que se configuran individualmente, mientras que los permisos heredados se heredan de la carpeta principal. La jerarquía de permisos es la siguiente:

    • Denegación explícita
    • Permiso explícito
    • Denegación heredada
    • Permiso heredado

    Ahora que sabemos que los permisos NTFS lo son, exploremos cómo administrarlos.

    Get ACL para archivos y carpetas

    El primer cmdlet de PowerShell utilizado para administrar los permisos de archivos y carpetas es «get-acl»; enumera todos los permisos de los objetos. Por ejemplo, obtengamos la lista de todos los permisos de la carpeta con la ruta de acceso del objeto «\\fs1\shared\sales»:

    get-acl \\fs1\shared\sales | fl

    Si desea obtener un informe completo de permisos NTFS a través de PowerShell, puede seguir este sencillo manual para exportar permisos NTFS a CSV.

    Copiar permisos de archivos y carpetas

    Para copiar permisos, un usuario debe poseer las carpetas de origen y de destino. El siguiente comando copiará los permisos de la carpeta «Contabilidad» a la carpeta» Ventas»:

    get-acl \\fs1\shared\accounting | Set-Acl \\fs1\shared\sales

    Como podemos ver en la salida de los comandos» get-acl «antes y después de la copia de permisos, los permisos de carpetas compartidas» Ventas » se han cambiado.

    Establecer permisos de archivos y carpetas

    El cmdlet «set-acl» de PowerShell se utiliza para cambiar el descriptor de seguridad de un elemento especificado, como un archivo, una carpeta o una clave de registro; en otras palabras, se utiliza para modificar los permisos de archivos o carpetas. El siguiente script establece el permiso «FullControl» en «Permitir» para el usuario «ENTERPRISE\T.Simpson «a la carpeta»Ventas»:

    Si desea establecer otros permisos para usuarios o grupos de seguridad, selecciónelos de la siguiente tabla:

    También hay conjuntos de permisos de derechos de acceso básicos que se pueden aplicar:

    Eliminar permisos de usuario

    Para eliminar un permiso, utilice el parámetro» RemoveAccessRule». Vamos a eliminar el «Permitir FullControl» permiso para T. Simpson a la «Venta» de la carpeta:

    Observe que T.Simpson todavía tiene el permiso de «Negar control total». Para eliminarlo, usemos el comando «PurgeAccessRules», que borrará completamente los permisos de T. Simpson a la carpeta» Ventas»:

    Tenga en cuenta que» PurgeAccessRules » no funciona con un nombre de usuario de cadena; solo funciona con SIDs. Por lo tanto, usamos la clase «Ntaccount» para convertir el nombre de la cuenta de usuario de una cadena en un SID. También tenga en cuenta que «PurgeAccessRules» solo funciona con permisos explícitos; no purga los heredados.

    Deshabilitar o Habilitar la herencia de permisos

    Para administrar la herencia, utilizamos el método» SetAccessRuleProtection». Tiene dos parámetros:

    • El primer parámetro es responsable de bloquear la herencia de la carpeta padre. Tiene dos estados: «true verdadero» y «false falso».
    • El segundo parámetro determina si se conservan o eliminan los permisos heredados actuales. Tiene los mismos dos estados: «true verdadero» y «false falso».

    Desactivemos la herencia de la carpeta» Ventas » y eliminemos también todos los permisos heredados:

    $acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($true,$false)$acl | Set-Acl \\fs1\shared\sales

    Ahora solo nos queda un permiso de acceso (porque se agregó explícitamente); se eliminaron todos los permisos heredados.

    Revirtamos este cambio y activemos la herencia de la carpeta «Ventas» de nuevo:

    $acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($false,$true)$acl | Set-Acl \\fs1\shared\sales

    Cambiar la propiedad del archivo y la carpeta

    Si desea establecer un propietario para una carpeta, debe ejecutar el método «SetOwner». Hagamos de» ENTERPRISE\J. Carter «el propietario de la carpeta «Ventas»:

    Observe que nuevamente usamos la clase» Ntaccount » para convertir el nombre de la cuenta de usuario de una cadena en un SID.

    Tenga en cuenta que el método «SetOwner» no le permite cambiar el propietario a cualquier cuenta que desee; la cuenta debe tener los derechos «Tomar posesión», «Leer» y «Cambiar permisos».

    Como puede ver, es muy fácil administrar permisos NTFS con PowerShell. Pero no se olvide de auditar también los permisos NTFS — ya que para la seguridad es fundamental realizar un seguimiento de todos los cambios realizados en sus servidores de archivos para reducir la fuga de datos y combatir la amenaza interna y otros riesgos de seguridad de TI. A continuación se muestra una guía básica sobre cómo auditar permisos NTFS con PowerShell.

    Jeff es un Director de Soluciones Globales de Ingeniería en Netwrix. Es bloguero, orador y presentador de Netwrix desde hace mucho tiempo. En el blog Netwrix, Jeff comparte trucos, consejos y trucos que pueden mejorar drásticamente la experiencia de administración de su sistema.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada.