2009-11-28 3 views
6

Mi aplicación está creando un directorio para que pueda almacenar archivos de registro en él. Estoy agregando seguridad de usuario al directorio, pero no sé cómo hacer que se propague. Por ejemplo, agrego el usuario everyone al directorio, con read y write, pero cuando mi aplicación crea un archivo de registro en este directorio, el archivo de registro no ha heredado la seguridad everyone (lectura, escritura).Seguridad de directorio

¿Qué me estoy perdiendo?

DirectorySecurity dirSec = Directory.GetAccessControl(_dbPath); 
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.Write, AccessControlType.Allow)); 
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.ReadAndExecute, AccessControlType.Allow)); 
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.CreateFiles, AccessControlType.Allow)); 
Directory.SetAccessControl(_dbPath, dirSec); 
+1

Tenga en cuenta que "Todos" no funcionará si el sistema no se está ejecutando en inglés, ya que este nombre está localizado en otros sistemas (por ejemplo, "Tout le monde" en un sistema operativo francés). Consulte http://stackoverflow.com/questions/5298905/add-everyone-privilege-to-folder-using-c-net para encontrar una solución a ese problema. –

Respuesta

4

Ya casi está allí. Lo que se está perdiendo es el indicador AuthorizationRule.InheritanceFlags: de manera predeterminada, las ACE no son heredables, pero si agrega el atributo InheritanceFlags, las ACE se volverán heredables.

Cuestiones relacionadas