Права на почтовый ящик можно посмотреть с помощью двух командлетов
Критерий | Get-MailboxPermission | Get-ADPermission |
---|---|---|
Уровень | База Exchange (Information Store) | Active Directory (объект пользователя/почтового ящика) |
Что регулирует | Доступ к содержимому почтового ящика | Делегирование действий над объектом в AD |
Типичные права | FullAccess, DeleteItem, ChangeOwner | Send As, Receive As, User-Change-Password |
Где применяются | Outlook, OWA, ActiveSync | AD, Transport, делегирование администрирования |
Видимость в ECP | Только Full Access | Только Send As и Send on Behalf |
PowerShell (`Get-MailboxPermission`) | Что это значит | Как отображается в ECP/EAC |
---|---|---|
FullAccess | Полный доступ к ящику (чтение, создание, удаление писем, работа с папками) | ✅ Отображается как Full Access |
SendAs (через `Get-ADPermission`) | Отправка писем как владелец ящика | ✅ Отображается как Send As |
SendOnBehalf (через `Set-Mailbox`) | Отправка писем "от имени" | ✅ Отображается как Send on Behalf |
DeleteItem | Удаление элементов | ❌ Не отображается в ECP |
ReadPermission | Чтение ACL (просмотр прав) | ❌ Не отображается в ECP |
ChangePermission | Изменение прав других пользователей на ящик | ❌ Не отображается в ECP |
ChangeOwner | Изменение владельца объекта | ❌ Не отображается в ECP |
В консоли ECP/EAC отображаются только три типа прав:
Все остальные детализированные права (`DeleteItem`, `ReadPermission`, `ChangePermission`, `ChangeOwner`) видны только через PowerShell (`Get-MailboxPermission`, `Get-ADPermission`) и в ECP/EAC не показываются.
Такие права в ACL могут появляться в следующих случаях:
⚠️ Важно: Наличие `DeleteItem`, `ChangeOwner` и подобных прав не всегда критично, но для «чистого» администрирования Exchange лучше опираться только на поддерживаемые сценарии: *Full Access*, *Send As*, *Send on Behalf*.
Показываем только детальные ACL-права на сам ящик: DeleteItem, ReadPermission, ChangePermission, ChangeOwner.
# Замените user@domain на нужный ящик Get-MailboxPermission -Identity user@domain | Where-Object { -not $_.IsInherited -and $_.User -notin 'NT AUTHORITY\SELF','NT AUTHORITY\SYSTEM','S-1-5-32-544','S-1-5-18' -and ($_.AccessRights -match 'DeleteItem|ReadPermission|ChangePermission|ChangeOwner') } | Select-Object Identity, User, Deny, AccessRights, InheritanceType | Format-Table -Auto
Пояснения:
Показываем расширенные права на объекте пользователя в AD, которые не видны в ECP.
# DistinguishedName почтового ящика $dn = (Get-Mailbox -Identity user@domain).DistinguishedName Get-ADPermission -Identity $dn | Where-Object { -not $_.IsInherited -and $_.ExtendedRights -and $_.User -notin 'NT AUTHORITY\SELF','NT AUTHORITY\SYSTEM' -and # Исключаем то, что видно в ECP/EAC: ($_.ExtendedRights -notcontains 'Send-As') -and ($_.ExtendedRights -notcontains 'Send on behalf') -and ($_.ExtendedRights -notcontains 'ms-Exch-Send-As') # встречается в старых средах } | Select-Object ObjectDN, User, Deny, @{n='ExtendedRights';e={$_.ExtendedRights -join ','}}, InheritanceType | Format-Table -Wrap
Примечание:
function Get-NonEcpMailboxAcls { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$Identity ) $mailbox = Get-Mailbox -Identity $Identity -ErrorAction Stop $dn = $mailbox.DistinguishedName $systemUsers = @('NT AUTHORITY\SELF','NT AUTHORITY\SYSTEM','S-1-5-32-544','S-1-5-18') $aclMailbox = Get-MailboxPermission -Identity $mailbox.Identity | Where-Object { -not $_.IsInherited -and $_.User -notin $systemUsers -and ($_.AccessRights -match 'DeleteItem|ReadPermission|ChangePermission|ChangeOwner') } | Select-Object @{n='Scope';e={'MailboxPermission'}}, @{n='Target';e={$mailbox.Identity}}, User, Deny, @{n='Right';e={($_.AccessRights -join ',')}}, InheritanceType $aclAd = Get-ADPermission -Identity $dn | Where-Object { -not $_.IsInherited -and $_.ExtendedRights -and $_.User -notin $systemUsers -and ($_.ExtendedRights -notcontains 'Send-As') -and ($_.ExtendedRights -notcontains 'ms-Exch-Send-As') -and ($_.ExtendedRights -notcontains 'Send on behalf') } | Select-Object @{n='Scope';e={'ADPermission'}}, @{n='Target';e={$dn}}, User, Deny, @{n='Right';e={($_.ExtendedRights -join ',')}}, InheritanceType $result = @($aclMailbox + $aclAd) if ($result.Count -eq 0) { Write-Host "Не найдено нестандартных прав, не отображаемых в ECP/EAC." -ForegroundColor Green } else { $result | Sort-Object Scope, User | Format-Table -Auto } }