Permisos NTFS y carpetas compartidas#

Permisos NTFS#

El sistema de archivos NTFS permite asignar permisos a archivos y carpetas mediante listas de control de acceso (ACL): cada archivo o carpeta lleva una lista de entradas que indican qué usuarios y grupos pueden hacer qué. Se configuran desde Propiedades → pestaña Seguridad.

Los permisos básicos no significan exactamente lo mismo sobre un archivo que sobre una carpeta:

Permisos sobre archivos#

  • Lectura: leer el archivo y ver sus atributos, sus permisos y quién es el propietario.

  • Escritura: sobrescribir el contenido del archivo y modificar sus atributos.

  • Lectura y ejecución: ejecutar el archivo (programas y scripts); incluye el permiso de Lectura.

  • Modificar: modificar o eliminar el archivo; incluye Escritura y Lectura y ejecución.

  • Control total: cambiar los permisos y tomar posesión; incluye todos los anteriores.

Permisos sobre carpetas#

  • Lectura: ver los archivos y subcarpetas que contiene, y sus atributos, permisos y propietario.

  • Escritura: crear archivos y subcarpetas dentro de la carpeta y modificar sus atributos.

  • Mostrar el contenido de la carpeta: listar los nombres de los archivos y subcarpetas (es el único permiso que solo existe en carpetas).

  • Lectura y ejecución: además de lo que permiten Lectura y Mostrar el contenido (que incluye), permite atravesar la carpeta, es decir, pasar por ella para llegar a un archivo aunque no se tengan permisos sobre las carpetas intermedias.

  • Modificar: eliminar la carpeta; incluye Escritura y Lectura y ejecución.

  • Control total: cambiar los permisos, tomar posesión y eliminar subcarpetas y archivos; incluye todos los anteriores.

Reglas de funcionamiento#

  • Los permisos se acumulan: los permisos efectivos de un usuario son la suma de los suyos y los de todos los grupos a los que pertenece.

  • Denegar tiene prioridad sobre permitir: si cualquiera de sus grupos tiene una denegación explícita, el usuario queda denegado.

  • Herencia: las subcarpetas y archivos heredan por defecto los permisos de la carpeta que los contiene; se puede romper la herencia en Propiedades → Seguridad → Opciones avanzadas.

  • El propietario de un archivo siempre puede cambiar sus permisos, y un administrador puede tomar posesión de cualquier archivo.

  • Podemos comprobar qué puede hacer realmente un usuario en Propiedades → Seguridad → Opciones avanzadas → Acceso efectivo.

Desde la línea de comandos: icacls#

Las ACL se administran con icacls:

icacls C:\datos                            # ver los permisos
icacls C:\datos /grant maria:(OI)(CI)M     # concede Modificar, heredable a archivos (OI) y carpetas (CI)
icacls C:\datos /remove maria              # quita sus entradas
icacls C:\datos /setowner maria            # cambia el propietario

Las letras de permiso más usadas en icacls son F (control total), M (modificar), RX (lectura y ejecución), R (lectura) y W (escritura).

Carpetas compartidas#

Para acceder a una carpeta desde otro equipo de la red hay que compartirla: Propiedades → pestaña CompartirUso compartido avanzado. El recurso queda accesible como \\equipo\recurso, utilizando el protocolo SMB (el mismo que implementa Samba en GNU/Linux).

Los permisos del recurso compartido son solo tres — Control total, Cambiar y Leer — y se aplican únicamente cuando se accede a través de la red (no afectan al usuario sentado en el equipo).

Importante

Cuando un usuario accede por red, se combinan los permisos del recurso compartido y los permisos NTFS, y se aplica el más restrictivo de los dos. Por eso una configuración habitual es compartir el recurso con permisos amplios y afinar el control con los permisos NTFS.

Windows comparte automáticamente algunos recursos administrativos ocultos, cuyo nombre termina en $ y no aparecen al explorar la red: C$ (la unidad C:), ADMIN$ (la carpeta de Windows)... Podemos crear los nuestros añadiendo $ al nombre del recurso.

Desde la línea de comandos:

net share                                  # lista los recursos compartidos
net share datos=C:\datos /grant:maria,change   # comparte C:\datos con permiso Cambiar para maria
net share datos /delete                    # deja de compartir
net use                                    # lista las conexiones de red
net use Z: \\servidor\datos                # conecta el recurso como unidad Z:
net use Z: /delete                         # desconecta la unidad