Question

Je joue avec un code PowerShell pour générer dynamiquement des groupes de sécurité publicitaires, puis les appliquer aux dossiers sur une part de réseau, mais avoir des problèmes liés à la résolution du groupe nouvellement créé.

Considérez ceci:

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

}

qui fonctionne bien.

Cependant, si je modifie le dossier dans un dossier réseau, tel que G: \ Temp ou \\ domain.network \ dfs \ groupshare \ temp, je reçois une "méthode échoue avec le code d'erreur inattendu 1337".

Je suis fatigué en utilisant SETACL.EXE et a reçu une erreur similaire:

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>

Si j'attends 10 à 20 secondes et exécutez à nouveau la partie SET-ACL (ou SETACL.EXE) du code, il se termine correctement.

Au début, je pensais que cela était lié directement aux contrôleurs de domaine (4 d'entre eux qui constituent un mélange de 2003 et 2008 R2), mais le fait qu'il fonctionnait bien sur des dossiers locaux était intriguant (et ennuyeux).

J'ai fait une trace Wireshark lors de l'exécution du code sur un dossier local, puis un dossier réseau. La principale différence est lorsque vous essayez d'appliquer les ACLS dans le dossier réseau, je vois des recherches LDAP et (entre autres) la réponse SMB suivante:

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

que je suppose est ce qui provoque l'échec de ma commande Set-ACL.

Le système de fichiers réseau sous-jacent est EMC celerra 6.0.xx. Je suis très inconnu avec cette technologie, cependant de ce que je comprends, il contient une sorte de cache de SID qui expliquerait l'erreur ci-dessus (elle ne connaît pas encore le nouveau groupe, même si AD fait l'annonce).

Donc, je suppose qu'il y a deux questions:

  1. y a-t-il un moyen autour de cela (PowerShell / C # ect) qui ne le fait pas impliquer dormir / attendre? C.-à-don, définissez la CAD même si le SID est invalide?
  2. Si EMC Celerra est le problème (je suppose que c'est), y a-t-il manière que je puisse forcer à mettre à jour son "cache de SID" ou quoi que ce soit?
  3. J'ai Lire Divers Articles À propos de ce numéro , mais personne ne semble avoir une résolution efficace (ou travailler pour moi).

    Merci pour votre aide.

    rhys.

Était-ce utile?

La solution 2

le figuré!

Modifiait la acl.mbappeRorrorAction sur notre NAS EMC Celerra NAS.

a été réglé sur 0, à la mise à jour à 1.

Server_Param Server_2 -Facility CIFS -Modify ACL.MappingErrorAction -Value 1

Nous n'avons maintenant aucun problème dans la définition du groupe de sécurité nouvellement créé dans les ACL pour le dossier sur une part de réseau (sans délai).


info: ACL.MappingErrorAction

Définit les règles de mappage inconnu entre les identificateurs de sécurité, de l'utilisateur et de groupe (SID / UID / GID) sur les paramètres ACL.

Deux types d'erreurs pourraient survenir: Le SID SET dans l'ACL est inconnu des contrôleurs de domaine utilisés. Le nom d'utilisateur n'est pas encore mappé sur un UID / GID.

La liste des bits est composée de quatre bits binaires (bits 0 à 3, droit à gauche). Chaque bit est 1 lorsqu'il est réglé; sinon 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).

Valeurs: 0 - 15 Valeur par défaut: 0


semble assez évident maintenant que je comprends plus sur les paramètres CIFS / ACL sous-jacents sur les NAS, alors j'ai toujours voulu savoir.

rhys.

Autres conseils

Si le problème n'est que le retard impliqué dans l'attente du cache de mettre à jour le blocage d'autres travaux, le script doit être effectué, vous pouvez expédier cela sur un travail d'arrière-plan et laisser votre script principal passer à d'autres choses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top