2010-07-14 5 views
4

Après avoir consulté mes journaux d'événements de sécurité sur Server 2003, j'ai remarqué qu'un événement était consigné avec un audit d'échec. La catégorie est l'accès aux objets, avec les éléments suivants Accède étant nécessaire:Modifier les propriétés d'accès aux objets via C#

READ_CONTROL
SYNCHRONIZE
ReadData (ou listDirectory)
WriteData (ou AddFile)
AppendData (ou AddSubDirectory ou CreatePipeInstance)

Je n'arrive pas à trouver de documentation sur la façon de modifier ces propriétés de manière proggramatique. Ces échecs sont générés par les exécutables postgres et tomcat.

EDIT

protected FileSystemRights[] AppendFileSystemRights() 
     { 
      return new FileSystemRights[] 
       { 
        FileSystemRights.ReadAndExecute, 
        FileSystemRights.WriteAttributes, 
        FileSystemRights.Synchronize, 
        FileSystemRights.ReadAttributes, 
        FileSystemRights.ReadData 
       }; 
      } 

public void ApplySystemRight(string fileName, FileSystemRights[] rights) 
     { 
      if (string.IsNullOrEmpty(fileName)) 
      { 
       return; 
      } 

      if (rights == null || rights.Length <= 0) 
      { 
       return; 
      } 

      try 
      { 
       Console.WriteLine("ATTEMPTING TO OPEN THE FOLLOWING FILE: {0}", fileName); 
       fileSec = File.GetAccessControl(fileName); 

       for (int i = 0; i < rights.Length; i++) 
       { 
        Console.WriteLine("ATTEMPTING TO ADD THE FOLLOWING ACCESS RULE: {0} TO {1}", rights[i], fileName); 
        fileSec.AddAccessRule(new FileSystemAccessRule(user, 
         rights[i], AccessControlType.Allow)); 
       } 

       Console.WriteLine("ATTEMPTING TO SET THE PRECEDING ACCESS RULES: TO {0}", fileName); 
       File.SetAccessControl(fileName, fileSec); 
      } 
      catch (UnauthorizedAccessException uae) 
      { 
       Console.WriteLine("CAUGHT THE FOLLOWING EXCEPTION: {0} \n WHILE PROCESSING: {1}", uae.Message, fileName); 
      } 
      catch (ArgumentNullException ane) 
      { 
       Console.WriteLine("CAUGHT THE FOLLOWING EXCEPTION: {0} \n WHILE PROCESSING: {1}", ane.Message, fileName); 
      } 
      catch (ArgumentException ae) 
      { 
       Console.WriteLine("CAUGHT THE FOLLOWING EXCEPTION: {0} \n WHILE PROCESSING: {1}", ae.Message, fileName); 
      } 

     } 
+0

Avez-vous des informations sur l'objet sur lequel l'accès est refusé? –

+0

Ronald Tomcat6.exe et psql.exe – Woot4Moo

+0

Mais je ne suppose pas que ce sont les fichiers qui ne sont pas accessibles? Ce sont probablement les processus qui ne peuvent pas accéder à un certain fichier (ou fichiers). Vous devez savoir quels fichiers ne peuvent pas être accédés par tomcat6.exe ou psql.exe. –

Répondre

1

Cela produira une erreur d'exécution dans l'application qui tente d'accéder à la ressource du système d'exploitation. Erreur Windows 5, ERROR_ACCESS_DENIED. Si vous n'obtenez aucun diagnostic dans le fichier journal de l'application, un événement dans le journal des événements Applications ou une exception gérée explicite qui vous indique ce qui s'est mal passé, vous recherchez une aiguille dans une botte de foin.

+0

Merci pour l'info, mais cela n'a pas vraiment répondre à la question – Woot4Moo

+0

Ces applications utilisent des milliers d'objets sécurables. Vous ne vous attendiez certainement pas à ce que je vous dise lequel. Encore une fois, si l'application n'enregistre pas cela, vous pouvez seulement utiliser quelque chose comme ProcMon de SysInternals pour voir l'erreur. Vous vous noierez dans la botte de foin des données. –

+0

Correct Je ne vous prévois pas d'énumérer tous les objets de sécurité potentiels, c'est pourquoi j'ai donné une liste concise et finie basée sur un processus. – Woot4Moo

1

Vous pouvez utiliser la classe FileSecurity pour modifier les propriétés de contrôle d'accès par programmation. Mais bien sûr, vous devez d'abord savoir pour quel fichier ou répertoire ces propriétés doivent être modifiées.

+0

Je posterai la source quand j'arriverai au travail – Woot4Moo

2

Je vous suggère d'exécuter Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) lors de l'exécution du processus à l'origine de l'échec de l'audit. Cela devrait vous indiquer la ressource spécifique à laquelle le processus tente d'accéder. Avec cette information, vous serez en mesure de définir les autorisations de ressources pour autoriser l'accès demandé.

Questions connexes