Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cloner des ACL'l

7 réponses
Avatar
jbongran
Bonjour,
Alors là, j'ai beau chercher, je suis sec !
Suite à une réorganisation, je dois modifier des permissions ntfs en masse
En gros j'ai des file server avec une structure comme ça:
racine du partage
|_ Folder1
| |_ Sub1
| |_ Sub2
|_ Folder2
| |_ Sub1
| |_ Sub2
etc...
J'ai une arborescence d'une branche dite modèle avec les nouvelles
permissions (les dossiers Sub1, Sub2, etc ont le même nom dans toutes les
branches)
|_ FolderModel
|_ Sub1
|_ Sub2
|_ ...
|_ ...

Et là, ben rien, je trouve pas comment cloner les acls du modèle sur leur
équivalents en production.
La seule solution trouvée, mais pas jouable compte tenu du nombre de
dossiers à traiter, c'est d'utiliser security explorer.
Y a pas un outil ou un script pour ce genre de chose, une idée ?
Merci
Ps: il peut y avoir coupure de l'héritage.
--
Jerome Bongran - MVP IIS

7 réponses

Avatar
Marc Lognoul [MVP]
Bonjour Jérôme,

As-tu testé avec SUBINACL (je sais, c'est veillot)? Tu peux prendre un dump
détaillé des permissions vers un fichier-texte, ensuite re-travailler ce
fichier afin de l'adapter aux nouveaux chemins et le l'appliquer sur le
serveur de destination.

--
Marc Lognoul [MCSE, MCTS, MVP]
Heureux celui qui a pu pénétrer les causes secrètes des choses
Happy is the one who could enter the secret causes of things
Blog EN: http://www.marc-antho-etc.net/blog/
Blog FR: http://www.marc-antho-etc.net/blogfr/

"jbongran" wrote in message
news:
Bonjour,
Alors là, j'ai beau chercher, je suis sec !
Suite à une réorganisation, je dois modifier des permissions ntfs en masse
En gros j'ai des file server avec une structure comme ça:
racine du partage
|_ Folder1
| |_ Sub1
| |_ Sub2
|_ Folder2
| |_ Sub1
| |_ Sub2
etc...
J'ai une arborescence d'une branche dite modèle avec les nouvelles
permissions (les dossiers Sub1, Sub2, etc ont le même nom dans toutes les
branches)
|_ FolderModel
|_ Sub1
|_ Sub2
|_ ...
|_ ...

Et là, ben rien, je trouve pas comment cloner les acls du modèle sur leur
équivalents en production.
La seule solution trouvée, mais pas jouable compte tenu du nombre de
dossiers à traiter, c'est d'utiliser security explorer.
Y a pas un outil ou un script pour ce genre de chose, une idée ?
Merci
Ps: il peut y avoir coupure de l'héritage.
--
Jerome Bongran - MVP IIS


Avatar
Lotre
bonsoir,

Pas de solution magique avec un beau script ?

je suis décu ... car
ce problème m'intéresse aussi ...
mais ... à scripter ...
.... c'est "chaud" comme disent les jeunes.

HB

jbongran wrote:
Bonjour,
Alors là, j'ai beau chercher, je suis sec !
Suite à une réorganisation, je dois modifier des permissions ntfs en
masse En gros j'ai des file server avec une structure comme ça:
racine du partage
|_ Folder1
| |_ Sub1
| |_ Sub2
|_ Folder2
| |_ Sub1
| |_ Sub2
etc...
J'ai une arborescence d'une branche dite modèle avec les nouvelles
permissions (les dossiers Sub1, Sub2, etc ont le même nom dans
toutes
les branches)
|_ FolderModel
|_ Sub1
|_ Sub2
|_ ...
|_ ...



Avatar
jbongran
"Marc Lognoul [MVP]" a écrit dans le message de
news:
Bonjour Jérôme,

As-tu testé avec SUBINACL (je sais, c'est veillot)? Tu peux prendre un
dump détaillé des permissions vers un fichier-texte, ensuite re-travailler
ce fichier afin de l'adapter aux nouveaux chemins et le l'appliquer sur le
serveur de destination.

--
Marc Lognoul [MCSE, MCTS, MVP]
Heureux celui qui a pu pénétrer les causes secrètes des choses
Happy is the one who could enter the secret causes of things
Blog EN: http://www.marc-antho-etc.net/blog/
Blog FR: http://www.marc-antho-etc.net/blogfr/

"jbongran" wrote in message
news:
Bonjour,
Alors là, j'ai beau chercher, je suis sec !
Suite à une réorganisation, je dois modifier des permissions ntfs en
masse
En gros j'ai des file server avec une structure comme ça:
racine du partage
|_ Folder1
| |_ Sub1
| |_ Sub2
|_ Folder2
| |_ Sub1
| |_ Sub2
etc...
J'ai une arborescence d'une branche dite modèle avec les nouvelles
permissions (les dossiers Sub1, Sub2, etc ont le même nom dans toutes les
branches)
|_ FolderModel
|_ Sub1
|_ Sub2
|_ ...
|_ ...

Et là, ben rien, je trouve pas comment cloner les acls du modèle sur leur
équivalents en production.
La seule solution trouvée, mais pas jouable compte tenu du nombre de
dossiers à traiter, c'est d'utiliser security explorer.
Y a pas un outil ou un script pour ce genre de chose, une idée ?
Merci
Ps: il peut y avoir coupure de l'héritage.
--
Jerome Bongran - MVP IIS





Bonjour Marc,
Aie, pas la tête !
Bien vu, j'ai fini mes tests avec subinacl sur une arborescence dissociée de
la production ;-)
En gros, voici la solution retenue:
En vbscript, je liste les sous-dossiers de mon arborescence modele, puis
genère un playfile subinacl par dossier avec son arborescence.
Un deuxième script (cela me permet de voir les playfile avant de les
appliquer) parcours les sous dossiers de l'arborescence de production et
pour chaque dossier prend le fichier playfile correespondant, change le
chemin du modele par celui de production et sauvegarde un nouveau play file,
en même temps je cree un batch contenant la ligne subinacl permettant de
rejour le playfile ainsi généré.
Cela fonctionne comme ça (ouf)
Si j'ai un peu de temps, je vais tester pour voir si je peux directement
générer le playfile avec les chemin de productions en utilsant la fonction
/replaceonoutput (de mémoire) de subinacl...
Subsiste deux questions:
1 - Lorsque je génère le "playfile", je n'ai pas trouvé le moyen de faire en
sorte de dire à subinacl de prendre le dossier toto ET les sous-dossiers ET
les fichiers
Si je fait /subdirectories jtoto il ne retourne que les acls de toto
Si je fait /subdirectories jtoto*.* il ne me retourne pas les acls pour
toto (mais bien tout ce qui est dessous)
J'ai contourné en faisant une passe pour le dossier vers un playfile
toto.tmp, puis une 2 eme passe vers un fichier toto1.tmp, puis je concatène
toto.tmp et toto1.tmp.
2 - Dans l'arborescence qui me sert de modele, l'objet SYSTEM à été oublié.
Si je le rajoute manuellment dans le playfile, il arrive (c'est pas
systématique) qu'une fenêtre me disant que les acls ne sont pas dans le bon
ordre. Je clique sur OK, à l'ouverture suivante tout va bien.
De quel ordre me parle t-il, alaphabétique ?

Ps: suivant la qualité du script final et son possible usage dans un autre
contexte, je posterai ici si cela interesse quelqu'un.
J'avoue que pour l'instant ma priorité est de faire en sorte que la
moulinette tourne, afin de modifier des listes d'acls nombreuses et
complexes sur un grand volume de données (+ ou - 7 To à faire en "one shot"
quand même)

Encore merci à toi Marc.
Avatar
Marc Lognoul [MVP]
Bonjour Jérôme,

Subsiste deux questions:
1 - Lorsque je génère le "playfile", je n'ai pas trouvé le moyen de faire
en sorte de dire à subinacl de prendre le dossier toto ET les
sous-dossiers ET les fichiers
Si je fait /subdirectories jtoto il ne retourne que les acls de toto
Si je fait /subdirectories jtoto*.* il ne me retourne pas les acls pour
toto (mais bien tout ce qui est dessous)
J'ai contourné en faisant une passe pour le dossier vers un playfile
toto.tmp, puis une 2 eme passe vers un fichier toto1.tmp, puis je
concatène toto.tmp et toto1.tmp.


Je procède de la même manière pour contourner ce problème.
J'ai testé avec un script WSH+WMI puis Powershell en remplacement mais les
performances sont loin derrière celles de SUBINACL (2ème traitement inclus)
-> pas de solution de mon côté

2 - Dans l'arborescence qui me sert de modele, l'objet SYSTEM à été
oublié.
Si je le rajoute manuellment dans le playfile, il arrive (c'est pas
systématique) qu'une fenêtre me disant que les acls ne sont pas dans le
bon ordre. Je clique sur OK, à l'ouverture suivante tout va bien.
De quel ordre me parle t-il, alaphabétique ?


Non, l'odre de précédence des ACEs qui détermine les permissions réelles.
L'explorateur Windows les trie autrement, pour des raisons cosmétiques (?)


Ps: suivant la qualité du script final et son possible usage dans un autre
contexte, je posterai ici si cela interesse quelqu'un.
J'avoue que pour l'instant ma priorité est de faire en sorte que la
moulinette tourne, afin de modifier des listes d'acls nombreuses et
complexes sur un grand volume de données (+ ou - 7 To à faire en "one
shot" quand même)


Je suis intéressé par les résultats en terme de de temps d'éxécution ;)

--
Marc Lognoul [MCSE, MCTS, MVP]
Heureux celui qui a pu pénétrer les causes secrètes des choses
Happy is the one who could enter the secret causes of things
Blog EN: http://www.marc-antho-etc.net/blog/
Blog FR: http://www.marc-antho-etc.net/blogfr/
Avatar
jbongran
"Marc Lognoul [MVP]" a écrit dans le message de
groupe de discussion : #
[...]
2 - Dans l'arborescence qui me sert de modele, l'objet SYSTEM à été
oublié.
Si je le rajoute manuellment dans le playfile, il arrive (c'est pas
systématique) qu'une fenêtre me disant que les acls ne sont pas dans le
bon ordre. Je clique sur OK, à l'ouverture suivante tout va bien.
De quel ordre me parle t-il, alaphabétique ?


Non, l'odre de précédence des ACEs qui détermine les permissions réelles.
L'explorateur Windows les trie autrement, pour des raisons cosmétiques (?)



La aussi j'ai contourné (en test) en faisant une passe sur tous les volumes
avec /grant=SYSTEM=F

Je suis intéressé par les résultats en terme de de temps d'éxécution ;)


Et moi plutôt, disons tendu ;-)
Une fois que ce chamboulement sera passé et les effets de bord résolus, je
ferais le retour.
--
Jerome Bongran - MVP IIS
Avatar
jbongran
"jbongran" a écrit dans le message de groupe de
discussion :

"Marc Lognoul [MVP]" a écrit dans le message de
groupe de discussion : #
[...]
2 - Dans l'arborescence qui me sert de modele, l'objet SYSTEM à été
oublié.
Si je le rajoute manuellment dans le playfile, il arrive (c'est pas
systématique) qu'une fenêtre me disant que les acls ne sont pas dans le
bon ordre. Je clique sur OK, à l'ouverture suivante tout va bien.
De quel ordre me parle t-il, alaphabétique ?


Non, l'odre de précédence des ACEs qui détermine les permissions réelles.
L'explorateur Windows les trie autrement, pour des raisons cosmétiques
(?)



La aussi j'ai contourné (en test) en faisant une passe sur tous les
volumes avec /grant=SYSTEM=F

Je suis intéressé par les résultats en terme de de temps d'éxécution ;)


Et moi plutôt, disons tendu ;-)
Une fois que ce chamboulement sera passé et les effets de bord résolus, je
ferais le retour.
--
Jerome Bongran - MVP IIS



Bon ça y est, le plus gros est passé, et comme j'avais promis un retour :-)
J'ai finalement scindé le traitement en trois scripts vbs:
Le premier parcours une arborescence complète dite modèle afin de créer à
certains endroits un fichier et/ou un dossier nommé "a_supprimer"
Le deuxième script génère en deux passes (une pour le répertoire racine et
une autre pour l'arborescence) un "playfile" de l'arborescence modèle dont
je modifie le nom de repertoire racine par une chaine fixe ($MODELE$) et les
lignes qui contiennent "a_supprimer" par +SUBDIREC au lieu de +File (ou
l'inverse, je ne sais plus), ce qui permet d'appliquer des droits par
héritage aux fichiers et répertoires existants dans les arborescence cibles
mais pas dans celle du modèle.
Le troisième charge en mémoire le playfile modèle, parcours une arborescence
afin de générer un playfile par sous répertoire (dont la structure est la
même que celle modèle) en remplaçant $MODELE$ par le chemin de chaque sous
répertoire. Il génère aussi un fichier cmd contenant les lignes permettant
d'appliquer les playfiles créés.
Côté performance, c'est assez variable, mais en gros sur une arborescence de
presque 1 Téra, avec environ 1,2 million de fichiers et des droits
explicites au niveaux 2 et 3 avec en moyenne une dizaines de groupe, il faut
compter 45 minutes sur un Xeon quad Core, 8 Go de RAM et des baies de
disques en fibre channel 4Gb sans surcharge notable de la RAM et les
processeurs qui plafonnent au maximum à 70%, machine toujours en production
avec les utilisateurs connectés.

Les scripts ne sont pas parfaits mais fonctionnent dans mon contexte. De
plus je n'ai pas eu le temps de fignoler la syntaxe ou d'optimiser au
maximum et pour finir ils sont vraiment "custom" mais si cela interesse
quelqu'un je peux les poster.
En tout cas, à la main, j'y serais encore, et en cas d'erreur ou de
modification des ACL's, hop juste à corriger le playfile modèle et 45
minutes plus tard toute l'arborescence est "up and running".
PS: quelques tests avec xcacls.vbs m'ont convaincu de laisser tomber,
beaucoup trop lent.

Security explorer aurait pu convenir mais je suis toujours réticent pour
installer une "mini usine à gaz", alors qu'il y a des moyens quasi natif de
le faire.
Il s'agit toutefois d'un excellent produit pour les allergiques de la ligne
de commande lorsqu'il s'agit de sauvegarder, modifier ou appliquer des ACL's
sur des arborescences ayant des ACL's nombreuses et/ou complexes.
--
Jerome Bongran - MVP IIS
Avatar
Marc Lognoul [MVP]
Salut Jérôme et merci d'avoir pris le temps de poster ton REX, c'est très
instructif et je te rejoins sur tous les points (structure des scripts,
performances décevantes du VBS...)

--
Marc Lognoul [MCSE, MCTS, MVP]
Heureux celui qui a pu pénétrer les causes secrètes des choses
Happy is the one who could enter the secret causes of things
Blog EN: http://www.marc-antho-etc.net/blog/
Blog FR: http://www.marc-antho-etc.net/blogfr/

Bon ça y est, le plus gros est passé, et comme j'avais promis un retour
:-)
J'ai finalement scindé le traitement en trois scripts vbs:
Le premier parcours une arborescence complète dite modèle afin de créer à
certains endroits un fichier et/ou un dossier nommé "a_supprimer"
Le deuxième script génère en deux passes (une pour le répertoire racine
et une autre pour l'arborescence) un "playfile" de l'arborescence modèle
dont je modifie le nom de repertoire racine par une chaine fixe ($MODELE$)
et les lignes qui contiennent "a_supprimer" par +SUBDIREC au lieu de +File
(ou l'inverse, je ne sais plus), ce qui permet d'appliquer des droits par
héritage aux fichiers et répertoires existants dans les arborescence
cibles mais pas dans celle du modèle.
Le troisième charge en mémoire le playfile modèle, parcours une
arborescence afin de générer un playfile par sous répertoire (dont la
structure est la même que celle modèle) en remplaçant $MODELE$ par le
chemin de chaque sous répertoire. Il génère aussi un fichier cmd contenant
les lignes permettant d'appliquer les playfiles créés.
Côté performance, c'est assez variable, mais en gros sur une arborescence
de presque 1 Téra, avec environ 1,2 million de fichiers et des droits
explicites au niveaux 2 et 3 avec en moyenne une dizaines de groupe, il
faut compter 45 minutes sur un Xeon quad Core, 8 Go de RAM et des baies de
disques en fibre channel 4Gb sans surcharge notable de la RAM et les
processeurs qui plafonnent au maximum à 70%, machine toujours en
production avec les utilisateurs connectés.

Les scripts ne sont pas parfaits mais fonctionnent dans mon contexte. De
plus je n'ai pas eu le temps de fignoler la syntaxe ou d'optimiser au
maximum et pour finir ils sont vraiment "custom" mais si cela interesse
quelqu'un je peux les poster.
En tout cas, à la main, j'y serais encore, et en cas d'erreur ou de
modification des ACL's, hop juste à corriger le playfile modèle et 45
minutes plus tard toute l'arborescence est "up and running".
PS: quelques tests avec xcacls.vbs m'ont convaincu de laisser tomber,
beaucoup trop lent.

Security explorer aurait pu convenir mais je suis toujours réticent pour
installer une "mini usine à gaz", alors qu'il y a des moyens quasi natif
de le faire.
Il s'agit toutefois d'un excellent produit pour les allergiques de la
ligne de commande lorsqu'il s'agit de sauvegarder, modifier ou appliquer
des ACL's sur des arborescences ayant des ACL's nombreuses et/ou
complexes.
--
Jerome Bongran - MVP IIS