Как мы с Сашей Трофимовым боролись с зомби в Exchange 2007
Получил я на днях письмо от Саши Трофимова с вопросом про Exch2007, PowerShell и права пользователей. Ситуация такова.
На сервере с Exchange 2007 SP1 разрешена поддержка Public Folders. Создаем в корне PF папку “test1” и даем к ней доступ учетной записи “PavelNagaev”.
[PS] C:\New-PublicFolder -name test1
[PS] C:\Add-PublicFolderClientPermission -id \test1 -user PavelNagaev -AccessRights Editor
Видим ниже, что пользователь “PavelNagaev” получил право Editor.
[PS] C:\>Get-PublicFolderClientPermission \test1
Identity User AccessRights
——– —- ————
\test1 Default {Author}
\test1 exchangerus.ru/Users/PavelNagaev {Editor}
\test1 exchangerus.ru/Users/Administrator {Owner}
\test1 Anonymous {CreateItems}
Затем удаляем учетную запись «PavelNagaev»
[PS] C:\>Remove-Mailbox -Identity exchangerus\PavelNagaev -Permanent $true
И что мы видим при просмотре прав на папку \test1? Правильно, мы видим SID удаленной учетной записи – «NT User:S-1-5-21-3195″. Это называется zombie user.
[PS] C:\>Get-PublicFolderClientPermission \test1
Identity User AccessRights
——– —- ————
\test1 Default {Author}
\test1 NT User:S-1-5-21-319571137-32441274… {Editor}
\test1 exchangerus.ru/Users/Administrator {Owner}
\test1 Anonymous {CreateItems}
Вопрос Саши заключался в том, как удалять эти зомби аккаунты с помощью PowerShell. Это можно сделать через Outlook, но не через PS. Если запустить Remove-PublicFolderClientPermission то возникает ошибка:
[PS] C:\>Remove-PublicFolderClientPermission -id \test1 -User «NT User:S-1-5-21-319571137-3244127458-2516713604-12139″ -AccessRighs Editor
Remove-PublicFolderClientPermission : The specified public folder user «NT User:S-1-5-21-319571137-3244127458-2516713604-12139″ des not exist. A valid public folder user should be a mail-enabled user, mailbox or distribution group.
At line:1 char:36
+ Remove-PublicFolderClientPermission <<<< -id \test1 -User «NT User:S-1-5-21-319571137-3244127458-2516713604-12139″ -AccessRigh
ts Editor
Где красным по черному написано: A valid public folder user should be a mail-enabled user, mailbox or distribution group.
Это значит, что у скрипта есть очень четкие параметры входа: mail-enabled user, mailbox or distribution group и он просто не может разобрать такое длинное имя.
Соответственно зомби пользователь эту проверку не проходит, поэтому PS с помощью именно RemovePublicFolderClientPermission удалить не даст. Скорее всего придется писать свой скрипт.
Но настоящих сурков такой ответ удовлетворить не мог и я
написал Evan Dodds, Program manager по Exchange в Microsoft.
Evan ответил следующее:
Pavel –
I asked around a bit – as I don’t have a lot of awareness of the details of the PublicFolder Permissions feature – and here’s what I found out:
Yes. What Pavel is observing is by design. When a user is removed, the ACL on public folders has a hanging SID. Since this is not transmitted over the wire (due to conversion to LegacyDN, which cannot be found for deleted users), the only ramification is that of wasted space.
There are currently no cmdlets to clean up such SIDs.
Получается, что на данный момент с помощью командлетов зомби не убить, но если этом можно сделать через Outlook, то наверняка можно и самописным скриптом, только вот стоит ли игра свеч?
Ссылки по теме: What are zombie users?
p.s. Очень большой минус Микрософту, что хоть и сделали в SP1 управление общими папками через EMC, но не сделали возможность раздачи прав через нее. Зачем вообще тогда было делать инструмент управления PF в EMC?
Похожие посты:
17 Январь 2008, 17:06
Комментариев: 7





17 Январь 17, 2008 г. в 17:59
Хых… А так хотелось счастья… =)
Сделай, что ли, запрос на доработку =)
18 Январь 18, 2008 г. в 14:31
Молодец Павел! Желание проверять блог на наличие свежых сообщений есть!
18 Январь 18, 2008 г. в 21:50
> Зачем вообще тогда было делать инструмент управления PF в EMC?
Помоему изначально было обьявлено что PF в 2007 только для того чтоб выйграть время для перехода на SP
Потому что очень сильно просили
Сча попробую повозиться со скриптом
31 Январь 31, 2008 г. в 16:59
Xaegr решил эту проблему так:
[PS] C:\Get-PublicFolderClientPermission -id "\test1"|where{$_.User -like"NT*"}|remove-publicfolderclientpermission
Молоток
31 Январь 31, 2008 г. в 18:11
Ща заценим – спасибо =)
1 Февраль 1, 2008 г. в 11:00
Работает, хотя товарищ говорит, что раньше так не работало. =)
Спасибо еще раз =)
9 Февраль 9, 2010 г. в 15:04
[...] [...]