2012-03-15 15 views
0

いくつかのPowerShellコードを使用して再生しているADセキュリティグループを動的に生成し、ネットワーク共有上のフォルダに適用します。正常に動作しますNew-ADGroup、Set-ACL、およびNetwork Foldersに関する問題

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 \ GroupShare \ Tempなどのネットワークフォルダに変更すると、「メソッドが予期しないエラーコード1337で失敗しました」というメッセージが表示されます。

I疲れ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秒を言う待って、再度セットACL(またはSETACL.EXE)コードの一部を実行した場合、それは正常に完了する。

私はこれがドメインコントローラ(2003年と2008 R2が混在した4つ)に直接関係していたと思っていましたが、ローカルフォルダで正常に動作したということは面白かったです。

ローカルフォルダとネットワークフォルダのコードの実行中にWiresharkトレースを行いました。私が想定し

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

は私のSet-ACLコマンドが失敗する原因となるものです:私は(とりわけ)LDAPルックアップとを参照してくださいネットワークフォルダにACLを適用するには、次のSMB応答をしようとしたときの主な違いはあります。

ネットワークファイルシステムは、EMC Celerra 6.0.xxです。私はこの技術に慣れていませんが、上記のエラーを説明する何らかのSIDキャッシュを保持していると理解しています(ADの場合でも新しいグループについてはまだ分かりません)。

だから、私は2つの質問があると思います。

  1. はない が待っ/スリーピング伴わないこの周りにどのような方法(PowerShellの/ C#ECT)はありますか? IEの場合、SIDが であってもACLを設定してください。
  2. EMC Celerraが問題である場合(私はそうであると仮定します)、 の方法で「SIDキャッシュ」などの更新を強制できますか?

が、私はこの問題についてreadvariousarticlesを持っているが、どれも効果的な解像度を持っている(または私のために働く)ように見えるん。

ありがとうございました。

Rhys。

答えて

0

EMC Celerra NASでacl.mappingErrorActionを変更しました。

server_param server_2の-facility CIFS -modify acl.mappingErrorAction - 値1

今、私たちはACLのに新しく作成されたセキュリティグループを設定するには問題がありません。1.

にそれを更新し、0に設定しました。ネットワーク共有上のフォルダ(遅延なし)。


情報:acl.mappingErrorAction

はACL設定のセキュリティ、ユーザー、およびグループ識別子(SID/UID/GID)の間の未知のマッピングのルールを定義します。

2種類のエラーが発生する可能性があります。 ACLに設定されているSIDは、使用されているドメインコントローラでは不明です。 ユーザ名はまだUID/GIDにマッピングされていません。

ビットリストは、4つのバイナリビット(ビット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。

0

キャッシュが更新されるのを待っているだけの遅延であれば、スクリプトが実行している必要がある他の作業をブロックしてバックグラウンドジョブに送り、メインスクリプトを他のものに進めることができます。

+0

これはいつも私たちのフォールバックオプションでした。 遅延のため、バックグラウンドジョブは待機しなければならず、500,000個のフォルダ(700万ファイル)のアクセス許可を設定すると、スクリプトの実行時間が長くなることがあります。 –

関連する問題