Уволился сотрудник, не простой, а сисадмин. Давно уже. Дело обычное, во всех компаниях имеется текучка кадров. Понадобилось его почтовый ящик подключить новому сотруднику. Но не тут-то было.
Операция не выполнена. Отказано в доступе.
INSUFF_ACCESS_RIGHTS.
Если вы такое видите, то, скорее всего, вы пытаетесь получить доступ к ящику пользователя, который ранее был администратором домена.
Если ты админ, то это надолго
AdminSDHolder — объект, расположенный в разделе System в Active Directory (cn=adminsdholder, cn=system, dc=domain, dc=dom). Он используется в качестве шаблона безопасности для объектов, которые являются членами определенных привилегированных групп, называемых защищенными группами.
В Active Directory есть учётные записи и группы с высоким уровнем привилегий, те же администраторы домена, например. Они по умолчанию считаются защищёнными. Пользователи, которым были делегированы разрешения на управление объектами Active Directory, могут не только изменять права доступа к объектам, но и управлять самими разрешениями (к примеру, чтобы настраивать членство в группах).
Защищённым учётным записям и группам разрешения объектов устанавливаются и применяются автоматически. Это гарантирует сохранение прав доступа, даже если объекты перемещены в другой каталог. Таким образом, если кто-либо вручную изменяет разрешения защищенного объекта, эти разрешения будут возвращены к их значениям по умолчанию.
Объекты, которые по умолчанию считаются защищенными группами, — это операторы учета, администратор, администраторы, операторы архива, администраторы домена, администраторы предприятия, администраторы корпоративных ключей, администраторы ключей, KRBTGT, операторы печати, контроллеры домена только для чтения, репликатор, администраторы схемы, операторы сервера.
Объект AdminSDHolder принадлежит группе Администраторы домена. Все защищенные с помощью AdminSDHolder объекты имеют атрибут AdminCount, установленный в 1. Если объект удалить из защищенной группы или заблокировать, значение атрибута AdminCount не изменится. Админы бывшими не бывают.
Пример скрипта для поиска объектов с AdminCount = 1:
$ldapFilter = "(adminCount=1)"
$domain = New-Object System.DirectoryServices.DirectoryEntry
$search = New-Object System.DirectoryServices.DirectorySearcher
$search.SearchRoot = $domain
$search.PageSize = 1000
$search.Filter = $ldapFilter
$search.SearchScope = "Subtree"
$result = $search.FindAll()
foreach ($res in $result){
$userEntry = $res.GetDirectoryEntry()
Write-host "Object Name = " $userEntry.name
Write-host "Object Class = " $userEntry.objectClass
foreach($AdminCount in $userEntry.adminCount){
Write-host "AdminCount = " $AdminCount
Write-host ""
}
}
Или поиск пользователей:
dsquery * domainroot -filter "(&(objectCategory=User)(adminCount=1))" -limit 0
Если пользователь, у которого мы пытаемся отобрать почтовый ящик, находится в данном списке, то с его учётной записью предварительно нужно поработать.
Снимаем статус защищённого объекта
Открываем оснастку "Active Directory - пользователи и компьютеры", нажимаем "Вид" и ставим галку "Дополнительные компоненты", это нужно для отображения вкладки атрибутов пользователя. Находим нашего пользователя в оснастке и открываем его свойства.
Удаляем пользователя из всех групп, пусть остаётся в Domain Users, всё равно учётная запись заблокирована.
Переключаемся на вкладку Attribute Editor, находим атрибут adminCount, видим, что он равен единице.
Редактируем атрибут adminCount.
Clear. OK.
Переходим на вкладку "Безопасность (Security)", нажмите кнопку "Дополнительно (Advanced)" и включаем наследование кнопкой "Enable inheritance".
Теперь можно передать его ящик другому пользователю.