2017-07-18 1 views
1

J'ai quatre groupes dans mon répertoire actif:Utilisez groupe de domaine pour ACL C#

  • ReadOnly
  • utilisateurs
  • gestionnaires
  • Partenaires

et j'ai un serveur Windows (2012) qui contient des dossiers:

  • administration
  • publique
  • restreint
  • Planification
  • Ressources

Comment puis-je utiliser ces groupes AD d'appliquer des règles d'accès sur ce serveur dans mon C# app?

Répondre

0

Il y a une façon de le faire!

groupes AD ont cette propriétés:

group.properties["objectSID"]; 

Je l'utilise pour:

SecurityIdentifier readOnlySID = new SecurityIdentifier(group.Properties["objectSID"][0] as byte[], 0); 

Et enfin:

FileSystemAccessRule(readOnlySID, FileSystemRights.Read, AccessControlType Allow); 

Ceci est la seule façon de gérer ACL pour un AD groupe!

0

Je l'ai déjà fait le programme Insérez vos données à C# et à l'exportation vers un fichier Powershell et l'exécuter

enter image description here

Voici le code Powershell pour les droits d'écriture

$acl = Get-Acl "\\Server\Testshare" 
$acl.SetAccessRuleProtection($False,$false) 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule('Server_Testshare_local','modify','ContainerInherit,ObjectInherit','None','Allow') 
$acl.AddAccessRule($rule) 
Set-Acl "\\Server\Testshare" $acl 

Et lire les droits

$acl = Get-Acl "\\Server\Testshare" 
$acl.SetAccessRuleProtection($False,$false) 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule('Server_Testshare_Read local','ReadAndExecute','ContainerInherit,ObjectInherit','None','Allow') 
$acl.AddAccessRule($rule) 
Set-Acl "\\Server\Testshare" $acl 

et C# enter image description here

+0

Je voudrais seulement utiliser C#:/ –

+0

@BaptisteMarcos Désolé, je ne sais pas un moyen de le faire sans PowerShell –

+0

@BaptisteMarcos Voulez-vous regarder ici? Https: //stackoverflow.com/questions/23780010/partage-a-dossiers-permission-en-c-sharp –