Используйте группу домена для ACL C#
У меня есть четыре группы в моем активном каталоге:
- ReadOnly
- пользователей
- Менеджеры
- партнеры
И у меня есть Windows Server (2012), который содержит несколько папок:
- администрация
- общественного
- ограниченный
- планирование
- Ressources
Как я могу использовать эти группы AD для применения правил доступа на этом сервере в моем приложении C#?
2 ответа
Решение
Есть способ сделать это!
Группы AD имеют следующие свойства:
group.properties["objectSID"];
Я использую это, чтобы:
SecurityIdentifier readOnlySID = new SecurityIdentifier(group.Properties["objectSID"][0] as byte[], 0);
И наконец:
FileSystemAccessRule(readOnlySID, FileSystemRights.Read, AccessControlType Allow);
Это единственный способ управлять ACL для группы AD!
Я уже сделал программу Вставьте ваши данные в C# и экспортируйте в файл Powershell и запустите его
Вот код PowerShell для прав на запись
$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
И Читай Права
$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