У меня есть домен под управлением Windows 2003 в режиме 2000. Я пытаюсь создать группу AD, чтобы предоставить пользователю временные разрешения администратора домена, чтобы избежать необходимости предоставлять им постоянный DA.
Я создал группу AD: g.Temp_DomainAdmin в OU: Groups / Admin / Delegated Permissions.
У меня есть запланированная задача с запуском VBScript для удаления всех пользователей из этой группы.
Задача выполняется как учетная запись службы с ограниченными разрешениями: s.purge_temp_da
Я делегировал разрешения на подразделение учетной записи службы, чтобы обеспечить полный контроль над группами, входящими в его состав.
Запуск задачи вручную работает отлично. Но всякий раз, когда он запускается в полночь, он дает сбой «-2147024891 - Общая ошибка отказа в доступе». Глядя на группу g.Temp_DomainAdmin, видно, что делегированные разрешения исчезли.
Любые идеи? Вот сценарий VBScript:
Option Explicit
Dim objRootDSE, strDomain, objGroup, objUser, strdistinguishedName, arrDnComponents
Const ADS_PROPERTY_DELETE = 4
' Retrieve domain information
Set objRootDSE = GetObject("LDAP://RootDSE")
strDomain = objRootDSE.Get("DefaultNamingContext")
' Bind to the group
Set objGroup = GetObject("LDAP://CN=G.ADM.Temp_DomainAdmin,OU=Delegated Permissions,OU=Admin,OU=Resource Access,OU=groups," & strDomain)
' Iterate through the user objects in the group
For Each objUser In objGroup.Members
on error resume next
' Get the users distinguishedName
strdistinguishedName = objUser.distinguishedName
wscript.echo "Removing " & objUser.cn
' Remove the user from the group
objGroup.PutEx ADS_PROPERTY_DELETE, "member", Array(strdistinguishedName)
objGroup.SetInfo
wscript.echo "Removed " & objUser.cn
if err.number <> 0 then
wscript.echo err.number & " - " & err.description
end if
on error goto 0
Next
wscript.echo "Done"
Спасибо
Вы испытываете влияние функций «adminSDHolder» и «SDProp» в Active Directory. Целью этой функции является применение известного ACL к участникам безопасности (пользователям, группам и компьютерам), которые являются членами специальных защищенных групп. Ваша группа «g.Temp_DomainAdmin», будучи членом «Администраторов домена», была помечена значением «adminCount», равным «1», и теперь подчиняется «adminSDHolder». ACL в вашей группе «g.Temp_DomainAdmin» будет сброшен до известного ACL при запуске этого потока. (Microsoft имеет более подробное описание этой функции если вы хотите узнать более подробную информацию.)
Ты можешь изменить ACL adminSDHolder чтобы учесть то, что вы пытаетесь сделать, но обычно это не рекомендуется.
Поскольку ваш сценарий имеет право добавлять / удалять членов группы «Администраторы домена», вам, вероятно, лучше всего просто запустить этот сценарий от имени пользователя с членством «Администраторы домена», тем самым избегая необходимости делегировать какие-либо разрешения для сценария. (По сути, если кто-то «владеет» контекстом выполнения скрипта, даже с делегированием, которое вы пытались организовать, он может просто использовать скрипт, чтобы добавить себя в «Администраторы домена». Делегирование усложняет ситуацию и не обеспечивает реальной безопасности. )