我正在玩一些powershell代码来动态生成广告安全组,然后将它们应用于网络共享的文件夹,但有问题解决新创建的组。

考虑一下:

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,或\\ domains.network \ dfs \ groupshare \ 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年的混合物的4个)相关联,但它在本地文件夹上工作正常的事实是有趣(和令人讨厌)。

我在执行本地文件夹的代码期间执行了Wireshark跟踪,然后是网络文件夹。主要区别在于尝试将ACL应用于网络文件夹时,我看到LDAP查找和(在其他内容中)以下SMB响应:

NT Trans Response, FID: 0x0040, NT SET SECURITY DESC, Error: STATUS_INVALID_SID
.

我假设是导致我的set-acl命令失败的原因。

底层网络文件系统是emc celerra 6.0.xx.我非常不熟悉这种技术,但是从我理解它持有某种SID缓存,这将解释上述错误(即使广告也尚不知道新组)。

所以我想有两个问题:

  1. 在此方面有没有办法(PowerShell / C#Ect)没有 涉及睡觉/等待?即,即使SID是的,也可以设置ACL 无效的?
  2. 如果emc celerra是问题(我认为是),有没有 我可以强迫它来更新其“SID缓存”或其可能是什么?
  3. 我有 read 各种 文章关于这个问题,但没有似乎有一种有效的分辨率(或为我工作)。

    谢谢你的帮助。

    rhys。

有帮助吗?

解决方案 2

图出了!

在我们的EMC Celerra NAS上修改了 Acl.mappingErroraction

设置为0,将其更新为1。

server_param server_2 -facility cifs -modify acl.mappingerraction -value 1

现在,我们在将新创建的安全组设置为网络共享(无延迟)的文件夹中的ACL中没有问题。


信息:acl.mapppingerraction

定义ACL设置上的安全性,用户和组标识符(SID / UID / GID)之间未知映射的规则。

可能发生两种错误: ACL中的SID设置为使用的域控制器未知。 用户名尚未映射到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


似乎很明显,现在我了解NAS上的底层CIFS / ACL设置,然后我想知道。

rhys。

其他提示

如果问题只是等待缓存的延迟才能更新封锁其他工作脚本需要做的事情,你可以将其发货到后台作业,让您的主脚本继续到其他事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top