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.
fuente
Respuestas:
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
Delete
se requieren permisos NTFS para modificar archivos; de hecho, si verificaAdvanced permissions
en un objeto NTFS, no hayModify
permiso, 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 attributes
permiso NTFS. Por eso no puede modificar un archivo sin tener elWrite attributes
permiso 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 Attributes
permiso), al modificar un archivo, pero no al crear uno completamente nuevo, ser el archivo deLastModificationTime
. Esto es parte delStandard Information
atributo, según uno de los desarrolladores de Microsoft Core Team .fuente
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.
fuente