2012-05-09 10 views
6

Hace poco rediseñé la seguridad en un servidor de archivos nuestro, marcando la mayor parte de lo que era Control total para modificar. Ahora mis desarrolladores me dicen que cada vez que usan GENERIC_ALL para abrir un archivo (con CreateFile() por ejemplo), reciben un mensaje de acceso denegado.GENERIC_ALL y carpetas/archivos ACL? ¿Qué hace GENERIC_ALL realmente?

Después de la investigación, nada parecía indicar que GENERIC_ALL fuera más que + GENERIC_WRITE + ; sin embargo, este no parece ser el caso, ya que un desarrollador pudo agregar los tres valores constantes, y usar esto para CreateFile().

Entonces, pregunto ... ¿qué hace realmente GENERIC_ALL?

Gracias,

Matt

+0

Como un maldito fantasma en el milagro de la máquina, pensé en esto hoy cuando me encontré con un problema de tiempo de espera con TortoiseHg al no poder crear archivos compartidos por un usuario. Quien acaba de actualizar la publicación, te debo una. – mbrownnyc

Respuesta

4

Los GENERIC_ALL derechos de acceso incluyen todos los posible derecho de acceso, incluyendo cosas tales como WRITE_DAC (Para cambiar los permisos) y WRITE_OWNER (para cambiar el propietario). La página File Security and Access Rights muestra cómo los derechos de acceso GENERIC_* se asignan a los derechos de acceso específicos para los archivos. La página File Access Rights Constants muestra todos los derechos de acceso posibles para los archivos (que presumiblemente se solicitarán cuando se use GENERIC_ALL).

Debe alentar a sus desarrolladores a solicitar solo el nivel de acceso que realmente necesitan. En raras ocasiones, por ejemplo, se abre un archivo para GENERIC_EXECUTE y GENERIC_WRITE al mismo tiempo.

3

GENERIC_ALL significa "cada posible nivel de acceso" (para archivos, esto tiene el nombre FILE_ALL_ACCESS). Como eliminó el Control total, los intentos de abrir para GENERIC_ALL fallarán con Acceso denegado porque (por ejemplo) WRITE_DAC ya no se concede.

Cuestiones relacionadas