Question [Résolu] Migration de domaine - ACL

Plus d'informations
il y a 8 ans 7 mois #24044 par nicolas
Bonjour à tous,

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.. :laugh:<br><br>Message édité par: Arnaud, à: 22/08/17 09:40

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 7 mois #24048 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:ACL fichier
Salut,
selon la doc de GET-ACL

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.

Tu dois faire un dir -recurse |TraiteACL si tu veux modifier tous les sous répertoires.
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.

Plus d'informations
il y a 8 ans 7 mois #24057 par nicolas
Réponse de nicolas sur le sujet Re:ACL fichier
Bonjour Laurent,

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 \&quot;autorisation spécial\&quot; est coché.

[code:1]PS&gt; $acl = get-acl h:\users\mpokora
PS&gt; $ace = new-object Security.AccessControl.FileSystemAccessRule(\&quot;EUROPE\mpokora\&quot;, \&quot;Modify\&quot;, \&quot;Allow\&quot;«»)
PS&gt; $acl.AddAccessRule($ace)
PS&gt; 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.

Plus d'informations
il y a 8 ans 7 mois #24058 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:ACL fichier
nicolas1 écrit:

Même avec le code basique ci-dessous, les droits (modification, fullcontrol etc..) ne ce coche pas.. Seul \&quot;autorisation spécial\&quot; est coché.

Sur quel OS ? Quel version de PS ?

Pour un compte de test, configure lui les droits souhaités via le GUI et compare les acl avec ton code de test.

Pour \&quot;autorisation spécial\&quot; 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.

Plus d'informations
il y a 8 ans 7 mois #24059 par nicolas
Réponse de nicolas sur le sujet Re:ACL fichier
Sur W10 pro et je suis en V5.

Je viens de regarder plus précisément dans les paramètres avancées de sécurité.

Effectivement dans la colonne \&quot;Accès\&quot; je suis bien en \&quot;modification\&quot; ou \&quot;contrôle total\&quot;.

Forcément dans la colonne \&quot;hérité de\&quot; 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 \&quot;sécurité\&quot; les autorisations.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 7 mois #24060 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:ACL fichier
nicolas1 écrit:

Mais je ne comprend pas pourquoi je ne vois pas directement dans \&quot;sécurité\&quot; les autorisations.

Aucune idée :(
Vérifie s'il ne manque pas un token ...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.055 secondes
Propulsé par Kunena