Вопросы с New-Adgroup, Set-ACL и сетевые папки
-
14-12-2019 - |
Вопрос
Я играю с кодом PowerShell для динамически генерирования групп безопасности AD, а затем примените их к папкам на долю сети, но имеющие проблемы с разрешением вновь созданной группы.
Рассмотрим это:
import-module activedirectory
for ($i = 0; $i -lt 10; $i++) {
$group = New-ADGroup -Path "OU=Groups,OU=Department,DC=Domain,DC=Network" -Name "z-test-group-$i" -GroupScope DomainLocal -GroupCategory Security -PassThru
$acl = Get-Acl C:\Temp
$permission = $group.SID,"FullControl","Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
$acl | Set-Acl C:\Temp
}
.
Что работает нормально.
Однако, если я изменил папку в сетевую папку, например G: \ Temp, или \\ domain.network \ dfs \ guardshare \ temp, я получаю метод не удалось с неожиданным кодом ошибки 1337 '. .
Я устал с помощью setacl.exe и получил аналогичную ошибку:
C:\Temp\SetACL.exe -on "\\domani.network\dfs\GroupShare\Temp" -ot file -actn ace -ace "n:$GroupSID;p:full;s:y"
SetACL finished with error(s):
SetACL error message: The call to SetNamedSecurityInfo () failed
Operating system error message: The security ID structure is invalid.
INFORMATION: Processing ACL of: <\\?\UNC\domain.network\dfs\GroupShare\Temp>
.
Если я жду скажем, от 10 до 20 секунд, и запустите часть Set-ACL (или Setacl.exe), еще раз, он успешно завершается.
Сначала я подумал, что это связано непосредственно к контроллерам домена (4 из них, которые представляют собой смесь 2003 и 2008 гг. R2), но тот факт, что он работал нормально, на местных папках интригует (и раздражает).
Я проводил прослушивающую трассировку во время выполнения кода в локальной папке, а затем сетевой папке. Основное отличие заключается в том, чтобы попытаться применить ACL в сетевую папку, я вижу поиски LDAP и (среди прочего) следующий ответ SMB:
NT Trans Response, FID: 0x0040, NT SET SECURITY DESC, Error: STATUS_INVALID_SID
.
Что я предполагаю, это то, что заставляет мою команду set-acl потерпеть неудачу.
Базовая сетевая файловая система является EMC Celerra 6.0.xx. Однако я очень незнакомый с этой технологией, однако из того, что я понимаю, он имеет какой-то кэш SID, который объяснил бы вышеуказанную ошибку (она пока не знает о новой группе, даже если реклама делает).
Так что я думаю, есть два вопроса:
- есть ли путь вокруг этого (PowerShell / C # ECT), который не Привлекайте сна / ждать? То есть установите ACL, хотя SID инвалид?
- Если Emc Celerra это проблема (предполагаю, что есть), есть ли То, как я могу заставить его обновить его «SID Cache» или что это может быть?
У меня есть чтение Различные Статьи Об этом вопросе , но никто не имеет эффективного разрешения (или работать для меня).
Спасибо за вашу помощь.
Рис.
Решение 2
понять это!
Модифицировал acl.mappepracturaction на нашей EMC Celerra NAS.
был установлен на 0, обновил его до 1.
server_param server_2 -facility cifs -modify acl.mappeerraction -value 1
Теперь у нас нет проблем в настройке вновь созданной группы безопасности в ACL для папки на долю сети (без задержек).
<Сильная> информация: acl.mappeReproraction
Определяет правила неизвестного отображения между идентификаторами безопасности, пользователя и группы (SID / UID / GID) на настройках ACL.
могут возникнуть два вида ошибок: SID, установленный в ACL, неизвестен для используемых контроллеров домена. Имя пользователя еще не отображается с UID / GID.
Битовый список состоит из четырех двоичных битов (бита 0-3, справа налево). Каждый бит 1 при установленном; в противном случае 0.
Bit 0 (0001 or +1): Store unknown SID.
Bit 1 (0010 or +2): Store SID with no UNIX mapping.
Bit 2 (0100 or +4): Enable debug traces.
Bit 3 (1000 or +8): Do lookup only in cache (secmap or global SID cache or per connection SID cache).
.
Значения: 0 - 15 По умолчанию: 0
Кажется, достаточно очевидно, что я больше понимаю о базовых настройках CIFS / ACL на NAS, то я когда-либо хотел знать.
Рис.
Другие советы
Если проблема является просто задержкой, участвующей в ожидании кэша для обновления блокировки другой работы, сценарий должен делать, вы можете отправить это на фоновую работу и позволить вашему главному сценарию продолжать другие вещи.