Permisos NTFS: cree archivos y carpetas pero evite la eliminación y modificación

10

Objetivo: una carpeta compartida en la que los usuarios pueden crear archivos pero no modificarlos o eliminarlos. Los usuarios también deberían poder crear subcarpetas.

Le he otorgado a mi grupo de seguridad los siguientes permisos avanzados de NTFS:

  • Recorrer carpeta / Ejecutar archivo
  • Listar carpeta / Leer datos
  • Leer atributos
  • Leer atributos extendidos
  • Crear archivos / escribir datos
  • Permisos de lectura

A través de un proceso de prueba y error, descubrí que al NO otorgar 'Escribir atributos', esto tiene el efecto de evitar que un usuario modifique / elimine archivos existentes (que es lo que quiero). Sin embargo, me gustaría una explicación de por qué esto funciona. La única teoría que tengo es que la eliminación / modificación de un archivo cambia los atributos del archivo. Aquí hay una discusión en la misma línea .

EDITAR: la segunda parte de mi pregunta es irrelevante, pensé que solo había seleccionado 'Crear archivos / Escribir datos', pero también tenía 'Crear carpetas / Anexar datos' también seleccionado.

Además, quiero que los usuarios puedan crear subcarpetas dentro de la raíz, y he descubierto que al otorgar 'Crear archivos / Escribir datos', esto permite justamente eso. Pero de nuevo, el nombre sugiere que este permiso debería permitir la creación de archivos, no carpetas, así que no entiendo por qué está funcionando. La explicación de Microsoft del atributo 'Crear archivos / Escribir datos' es "Para carpetas, especifica si un usuario puede crear archivos dentro de la carpeta. Para archivos, especifica si un usuario puede cambiar archivos o sobrescribir datos". ¿No se menciona la capacidad de crear subcarpetas dentro de una carpeta?

Básicamente, he logrado lo que me propuse hacer, pero no entiendo por qué funciona.

Fitzroy
fuente
El contenido de un archivo NTFS ES un "atributo"; a saber, el atributo de datos sin nombre predeterminado y quizás uno o más atributos de datos con nombre.
kreemoweet
Consulte también la buena respuesta aquí: superuser.com/a/1145363/132727
CrazyTim

Respuestas:

7

A través de un proceso de prueba y error, descubrí que al NO otorgar 'Escribir atributos', esto tiene el efecto de evitar que un usuario modifique / elimine archivos existentes (que es lo que quiero). Sin embargo, me gustaría una explicación de por qué esto funciona.

Esta es una función de cómo se produce una modificación de archivo. Cuando modifica un archivo, el sistema operativo en realidad no modifica el archivo que está editando. Reemplaza el archivo que está editando con la copia que cambió. Entonces, esencialmente, una modificación de archivo toma una copia del archivo original, lo carga en la memoria (donde lo modifica), elimina el archivo original y crea un nuevo archivo con el mismo nombre en el mismo lugar. Esta es la razón por la cual Deletese requieren permisos NTFS para modificar archivos; de hecho, si verifica Advanced permissionsen un objeto NTFS, no hay Modifypermiso, una modificación es realmente solo una eliminación y una escritura.

Entonces, para crear esa nueva copia de un archivo, tiene que escribir los atributos de archivo de este nuevo archivo ... y, por supuesto, escribir atributos requiere el Write attributespermiso NTFS. Por eso no puede modificar un archivo sin tener el Write attributespermiso NTFS.

Específicamente, gracias a un chat con Fitzroy , el atributo de archivo NTFS que debe escribirse bajo el contexto de seguridad del usuario (que no puede ser, sin el Write Attributespermiso), al modificar un archivo, pero no al crear uno completamente nuevo, ser el archivo de LastModificationTime. Esto es parte del Standard Informationatributo, según uno de los desarrolladores de Microsoft Core Team .

HopelessN00b
fuente
1
"Esta es la razón por la cual se requieren permisos de eliminación de NTFS para modificar archivos; de hecho, si marca los permisos avanzados en un objeto NTFS, no hay permiso de modificación: una modificación es realmente solo una eliminación y una escritura". ¿Puedes apoyar eso con hechos o referencias? Porque a través de más pruebas, descubrí que para modificar el contenido de un archivo de texto simple (usando el bloc de notas) simplemente agregué los siguientes permisos: Escribir atributos, Escribir atributos extendidos y Crear carpetas / Agregar datos. Acepto que diferentes programas pueden exhibir un comportamiento diferente al modificar un archivo ...
Fitzroy
... sin embargo, creo que esta prueba demuestra que 'Eliminar' no es obligatorio.
Fitzroy
"Esta es una función precisa de cómo se produce la modificación de un archivo. Cuando modifica un archivo, el sistema operativo en realidad no modifica el archivo que está editando. Reemplaza el archivo que está editando con la copia que cambió. Entonces, esencialmente, una modificación de archivo toma una copia del archivo original, lo carga en la memoria (donde lo modifica), elimina el archivo original y crea un nuevo archivo con el mismo nombre en el mismo lugar ". - es uhh, bastante engañoso y extremadamente inexacto en muchos niveles técnicos diferentes .
usuario2864740
3

Es cierto: no tener el permiso 'Escribir atributos' hace que el usuario no pueda modificar sus archivos. Y de acuerdo con la documentación de Microsoft no tiene sentido. Pero modificar un archivo no implica eliminarlo y recrearlo. Cuando una aplicación abre un archivo para modificarlo, el sistema operativo no elimina el archivo. Pero, lo que hace el sistema operativo es bloquear el archivo para evitar modificaciones concurrentes. Mi conjetura es que bloquear el archivo cae bajo el concepto de 'cambiar los atributos del archivo'. Por lo tanto, no poder cambiar los atributos resulta en no poder modificar el archivo.

Para la segunda parte de su pregunta, no puedo reproducir eso. Hay dos permisos diferentes que se aplican a una carpeta: 'Crear archivos / ...' y 'Crear carpetas / ...' y funcionaron de acuerdo con la documentación durante mis pruebas.

drk.com.ar
fuente
Drk: solo digiriendo tu respuesta. FYI: omití un permiso en mi pregunta, también debería haber enumerado 'Leer atributos extendidos'. Sin este permiso, he descubierto que los usuarios no pueden ver el contenido de un archivo (obtienen un error de "Acceso denegado"). He actualizado mi pregunta en consecuencia.
Fitzroy
De acuerdo, para mi prueba supuse que también estabas otorgando ese permiso. Descubrí que el bloc de notas no puede modificar un archivo incluso con el permiso '... / escribir datos' otorgado. Aquí hay otra cosa que vale la pena señalar: escribir datos versus agregar permisos de datos depende de cómo su aplicación abra el archivo para su modificación. Lo más probable es que el bloc de notas abra archivos para agregar datos siempre, incluso si no es necesario.
drk.com.ar
Para la segunda parte de su pregunta, no puedo reproducir eso. Hay dos permisos diferentes que se aplican a una carpeta: 'Crear archivos / ...' y 'Crear carpetas / ...' y funcionaron de acuerdo con la documentación durante mis pruebas. Tiene toda la razón, mi error, pensé que solo había seleccionado 'Crear archivos / Escribir datos' pero también tenía 'Crear carpetas / Agregar datos' también seleccionado.
Fitzroy