Как я добавляю новую группу безопасности для учетной записи компьютера и устанавливаю следующие разрешения в AD
Я хотел бы установить следующие параметры для подразделения AD (Active Directory, Windows Server 2008 R2) для конкретной группы пользователей, использующих C# (.NET 4.0).
1.Содержание список
2.прочитайте все свойства
3.Запишите все свойства
4.Разрешения На Чтение
5.изменение разрешения
6.Смените Пароль
7.Сброс Пароля
8.проверенная запись в DNS-имя хоста
9.проверенная запись в имя участника службы
Ниже работает для всех свойств я хочу только вышеуказанные параметры
Что я уже пробовал:
using (DirectoryEntry computers = new DirectoryEntry(GrpAccpath, LDAPUser, LDAPPassword)) { computers.Options.SecurityMasks = System.DirectoryServices.SecurityMasks.Owner | System.DirectoryServices.SecurityMasks.Group | System.DirectoryServices.SecurityMasks.Dacl | System.DirectoryServices.SecurityMasks.Sacl; foreach (DirectoryEntry computer in computers.Children) { if (computer.Name == "CN=" + ComputerAccountID) { for (i = 0; i < strArry.Length; i++) { ActiveDirectorySecurity sdc = computer.ObjectSecurity; // NTAccount Account = new NTAccount("Everyone"); try { NTAccount Account = new NTAccount("Domain Admins"); SecurityIdentifier Sid = (SecurityIdentifier)Account.Translate(typeof(SecurityIdentifier)); ActiveDirectoryAccessRule rule = new ActiveDirectoryAccessRule(Sid, ActiveDirectoryRights.ExtendedRight | ActiveDirectoryRights.GenericRead | ActiveDirectoryRights.CreateChild | ActiveDirectoryRights.GenericWrite | ActiveDirectoryRights.AccessSystemSecurity | ActiveDirectoryRights.Delete | ActiveDirectoryRights.DeleteChild | ActiveDirectoryRights.DeleteTree | ActiveDirectoryRights.GenericAll | ActiveDirectoryRights.GenericExecute | ActiveDirectoryRights.GenericRead | ActiveDirectoryRights.GenericWrite | ActiveDirectoryRights.ListChildren | ActiveDirectoryRights.ListObject | ActiveDirectoryRights.ReadControl | ActiveDirectoryRights.ReadProperty | ActiveDirectoryRights.Self | ActiveDirectoryRights.Synchronize | ActiveDirectoryRights.WriteDacl | ActiveDirectoryRights.WriteDacl | ActiveDirectoryRights.WriteOwner | ActiveDirectoryRights.WriteProperty, AccessControlType.Allow); AccessControlType.Allow); if (Enable == true) sdc.AddAccessRule(rule); else sdc.RemoveAccessRule(rule); computer.CommitChanges(); } catch (Exception Ex) { Logger.LogInfo(" Group Not Found : " + Ex.ToString() + strArry[i]); } } break; }
phil.o
Почему бы вам просто не удалить разрешения, которые вам не нужны, из списка, который предоставляет этот фрагмент кода?
Nethaji chennai
ты можешь объяснить? iam новый ActiveDirectoryAccessRule
DaveAuld
Он имеет в виду, что если код, который вы показали выше, имеет все свойства, то удалите его части, которые относятся к свойствам, которые вам не нужны.
phil.o
ActiveDirectoryRights.ExtendedRight | ActiveDirectoryRights.GenericRead | ActiveDirectoryRights.CreateChild | ActiveDirectoryRights.GenericWrite | ActiveDirectoryRights.AccessSystemSecurity | ActiveDirectoryRights.Delete | ActiveDirectoryRights.DeleteChild | ActiveDirectoryRights.DeleteTree | ActiveDirectoryRights.GenericAll | ActiveDirectoryRights.GenericExecute | ActiveDirectoryRights.GenericRead | ActiveDirectoryRights.GenericWrite | ActiveDirectoryRights.ListChildren | ActiveDirectoryRights.ListObject | ActiveDirectoryRights.ReadControl | ActiveDirectoryRights.ReadProperty | ActiveDirectoryRights.Self | ActiveDirectoryRights.Synchronize | ActiveDirectoryRights.WriteDacl | ActiveDirectoryRights.WriteDacl | ActiveDirectoryRights.WriteOwner | ActiveDirectoryRights.WritePropertyЯ имею в виду, среди всех этих прав выше, просто снимите те, которые вы не хотите. Математически, как только вы это сделаете, останутся только те, кого вы хотите.
Nethaji chennai
Да, но если добавить любое правило доступа с несколькими разрешениями(нужны и не нужны опции), добавленное в ad. я хочу точно 9 выше . Другие не нужны
Пример: ActiveDirectoryRights.ExtendedRight добавить
ниже разрешение добавлено в объявление
1.Смените Пароль
2.Сброс Пароля
3.Допускается для проверки подлинности
4.Прием и т. д
но я хочу только одного
1.Смените Пароль
2.Сброс Пароля
ZurdoDev
У тебя есть код. В чем именно заключается ваш вопрос?
Nethaji chennai
я хочу как ниже
использование (DirectoryEntry computers = new DirectoryEntry(GrpAccpath, LDAPUser, LDAPPassword))
{
компьютеры.Опции.SecurityMasks = Система.Каталог.Защитные маски.Владелец | Система.Каталог.Защитные маски.Группа |
Система.Каталог.Защитные маски.На Уровне Пользователей | Системы.Каталог.Защитные маски.список SACL;
foreach (DirectoryEntry computer in computers.Дети)
{
если (компьютер.Имя == "CN=" + ComputerAccountID)
{
для (i = 0; i < strArry.Длина; i++)
{
ActiveDirectorySecurity sdc = компьютер.ObjectSecurity;
// NTAccount Account = новый NTAccount("все");
пробовать
{
Учетная запись NTAccount = новый NTAccount("администраторы домена");
Идентификатор Securityidentifier Сида = Счет (Идентификатор Securityidentifier).Translate(typeof(SecurityIdentifier));
ActiveDirectoryAccessRule rule = новый ActiveDirectoryAccessRule(Sid,
ActiveDirectoryRights.Список содержимого | ActiveDirectoryRights.Читать все свойства |
ActiveDirectoryRights.Напишите все свойства | ActiveDirectoryRights.разрешение на чтение
ActiveDirectoryRights.Измените разрешение | ActiveDirectoryRights.изменение пароля |
ActiveDirectoryRights.Сброс Пароля | ActiveDirectoryRights.Проверенная запись в DNS-имя хоста
| | ActiveDirectoryRights.Проверенная запись в имя участника службы Accesscontroltype.Позволять);
if (Enable == true)
ШУРС.AddAccessRule(правило);
еще
sdc.RemoveAccessRule(правило);
компьютер.CommitChanges();
}
поймать (исключение бывший)
{
Лесоруб.LogInfo(" группа не найдена : "+ Ex.ToString() + strArry[i]);
}
}
перерыв;
}
ZurdoDev
У вас есть как выше.
Nethaji chennai
Я хочу дать разрешение только на вышеуказанные свойства. но у меня нет такого кода формата
Nethaji chennai
Пожалуйста, обновите
ZurdoDev
Я не знаю, о чем ты просишь. У вас есть код, который устанавливает разрешения. Вы не совсем ясно представляете, в чем вам нужна помощь и где вы застряли.
Nethaji chennai
я хочу установить разрешение, как показано ниже, со свойствами. но код не работает
ActiveDirectoryAccessRule rule = новый ActiveDirectoryAccessRule(Sid,
ActiveDirectoryRights.Список содержимого | ActiveDirectoryRights.Читать все свойства |
ActiveDirectoryRights.Напишите все свойства | ActiveDirectoryRights.разрешение на чтение
ActiveDirectoryRights.Измените разрешение | ActiveDirectoryRights.изменение пароля |
ActiveDirectoryRights.Сброс Пароля | ActiveDirectoryRights.Проверенная запись в DNS-имя хоста
| | ActiveDirectoryRights.Проверенная запись в имя участника службы Accesscontroltype.Позволять