Question
[Résolu] Migration de domaine - ACL
- nicolas
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 7
- Remerciements reçus 0
Je dois réaliser une migration de domaine.
Tout le côté technique est ok mais il me reste une grosse épine du pied pour pouvoir lancer complètement cette migration..
Nous avons un répertoire partagé entre tous les utilisateurs avec différents droits dans les sous répertoires.
Mon souhait est de scanner le répertoire et sous répertoires et d'ajouter les utilisateurs de mon domaine en fonction de leur ancien droits.
Ex : Si toto.local.fr avait comme droit L R (ancien domaine) alors je créer un toto.nouveau.fr L R
Voici pour le moment où j'en suis :
[code:1]$accessMask = [ordered]@{
[uint32]'0x80000000' = 'GenericRead'
[uint32]'0x40000000' = 'GenericWrite'
[uint32]'0x20000000' = 'GenericExecute'
[uint32]'0x10000000' = 'GenericAll'
[uint32]'0x02000000' = 'MaximumAllowed'
[uint32]'0x01000000' = 'AccessSystemSecurity'
[uint32]'0x00100000' = 'Synchronize'
[uint32]'0x00080000' = 'WriteOwner'
[uint32]'0x00040000' = 'WriteDAC'
[uint32]'0x00020000' = 'ReadControl'
[uint32]'0x00010000' = 'Delete'
[uint32]'0x00000100' = 'WriteAttributes'
[uint32]'0x00000080' = 'ReadAttributes'
[uint32]'0x00000040' = 'DeleteChild'
[uint32]'0x00000020' = 'Execute/Traverse'
[uint32]'0x00000010' = 'WriteExtendedAttributes'
[uint32]'0x00000008' = 'ReadExtendedAttributes'
[uint32]'0x00000004' = 'AppendData/AddSubdirectory'
[uint32]'0x00000002' = 'WriteData/AddFile'
[uint32]'0x00000001' = 'ReadData/ListDirectory'
}
$simplePermissions = [ordered]@{
[uint32]'0x1f01ff' = 'FullControl'
[uint32]'0x0301bf' = 'Modify'
[uint32]'0x0200a9' = 'ReadAndExecute'
[uint32]'0x02019f' = 'ReadAndWrite'
[uint32]'0x020089' = 'Read'
[uint32]'0x000116' = 'Write'
}
$dossiers = \"C:\Users\toto\doc\"
$acl = get-acl \"$dossiers\"
Foreach($ac in ($acl.Access | ?{$_.IdentityReference -notmatch 'BUILTIN*' -and $_.IdentityReference -notmatch 'SYST' -and $_.IdentityReference -notmatch 'CREATEUR'} ))
{
$fileSystemRights = Get-Acl -LiteralPath $dossiers | Select-Object -Expand Access | Select-Object -Expand FileSystemRights -First 1
$fsr = $fileSystemRights.value__
$droits = @()
# get simple permission
$droits += $simplePermissions.Keys | ForEach-Object {
if (($fsr -band $_) -eq $_)
{
$simplePermissions[$_]
$fsr = $fsr -band (-bnot $_)
}
}
# get remaining extended permissions
$droits += $accessMask.Keys | Where-Object { $fsr -band $_ } | ForEach-Object { $accessMask[$_] }
#$droits = $ac.FileSystemRights
$access = $ac.AccessControlType
$user = $ac.IdentityReference
$user = $user -replace 'Ancien Domaine','Nouveau Domain'
$permission = \"$user\", \"$droits\", \"$access\"
$ace = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.addaccessrule($ace)
Set-Acl $dossiers $acl
}[/code:1]
Mon script scan que le répertoire principal et non les sous répertoires, crée bien l'utilisateur mais ne met aucun droit.
Si quelqu'un à une idée je suis preneur..
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
selon la doc de GET-ACL
Tu dois faire un dir -recurse |TraiteACL si tu veux modifier tous les sous répertoires.L'applet de commande Get-Acl récupère les objets qui représentent le descripteur de sécurité d'un fichier ou d'une ressource.
Le descripteur de sécurité contient les listes de contrôle d'accès (ACL) de la ressource. La liste ACL spécifie les autorisations dont disposent les utilisateurs et les groupes d'utilisateurs pour accéder à la ressource.
Quant aux droits qui ne sont pas placés vérifie si tu manipules les bonnes variables.
Pas trop compris, en lecture rapide, l'usage de $ACL et $fileSystemRights qui à priori pointe sur le même objet.<br><br>Message édité par: Laurent Dardenne, à: 28/07/17 12:30
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- nicolas
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 7
- Remerciements reçus 0
Je voulais revenir au début du script sans automatiser le changement automatique d'un domaine à l'autre.
J'ai lu les articles de Janel qui traitait les ACL.
powershell-scripting.com/index.php?optio...96&catid=14#9396
Même avec le code basique ci-dessous, les droits (modification, fullcontrol etc..) ne ce coche pas.. Seul \"autorisation spécial\" est coché.
[code:1]PS> $acl = get-acl h:\users\mpokora
PS> $ace = new-object Security.AccessControl.FileSystemAccessRule(\"EUROPE\mpokora\", \"Modify\", \"Allow\"«»)
PS> $acl.AddAccessRule($ace)
PS> set-acl h:\users\mpokora $acl[/code:1]
Pourtant je lance le script depuis un compte administrateur du poste, et cet utilisateur est en fullcontrol sur le répertoire.<br><br>Message édité par: nicolas1, à: 1/08/17 09:46
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Sur quel OS ? Quel version de PS ?Même avec le code basique ci-dessous, les droits (modification, fullcontrol etc..) ne ce coche pas.. Seul \"autorisation spécial\" est coché.
Pour un compte de test, configure lui les droits souhaités via le GUI et compare les acl avec ton code de test.
Pour \"autorisation spécial\" il faut regarder en quoi l'héritage des droits influence ta configuration :/
Regarde aussi ce post .
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- nicolas
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 7
- Remerciements reçus 0
Je viens de regarder plus précisément dans les paramètres avancées de sécurité.
Effectivement dans la colonne \"Accès\" je suis bien en \"modification\" ou \"contrôle total\".
Forcément dans la colonne \"hérité de\" j'ai la valeur aucun.
Et cela s'applique qu'au répertoire.
Mais je ne comprend pas pourquoi je ne vois pas directement dans \"sécurité\" les autorisations.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Aucune idéeMais je ne comprend pas pourquoi je ne vois pas directement dans \"sécurité\" les autorisations.
Vérifie s'il ne manque pas un token ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Migration de domaine - ACL