IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Positionner des Droits sur des dossiers [FAQ]


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut [Résolu] Positionner des Droits sur des dossiers
    Bonjour,

    tout d'abord je précise que je débute en VBS/WSH et j'ai pris le temps de chercher des infos ici même et partout où google m'a mené.
    Deux posts dans cette section traite du sujet mais sans y apporter de réponse fonctionnel (où alors je suis vraiment une buse)

    Problème:
    Je souhaite ré-attribuer des droits à un ensemble de sous répertoires en fonction du nom du repertoire, puisque ces noms correspondent aux users.

    Pour ce faire j'utilise le Win32_logicalFileSecuritySettings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set objWMIService = GetObject("winmgmts:")
    			Set objFolderSecuritySettings = _
    			objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")
    			intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)
    			intControlFlags = objSD.ControlFlags
     
    			If intControlFlags AND SE_DACL_PRESENT Then
    			   arrACEs = objSD.DACL
    J'arrive à afficher les droits présents mais non à les modifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    			   ' Affiche les DACLs des sous repertoires
    			   For Each objACE in arrACEs
    				  objExplorer.Document.WriteLn objACE.Trustee.Domain & " -" & objACE.Trustee.Name				  
    			      If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
    					 objExplorer.Document.WriteLn vbTab & "<font color=cyan> Allowed</font><br>"
    			      ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
    					 objExplorer.Document.WriteLn vbTab & "<font color=tomato> Denied</font><br>"
    			      End If
    			   Next
    			Else
    			   WScript.Echo "No DACL present in security descriptor"
    			End If
    Et c'est ici qu'intervient mon problème, comment attribuer ces fichus droits...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    			   '  Teste si un DACLs correspond au nom du repertoire
    			   for Each objACE in arrACEs
    					if objACE.Trustee.Name = objSubfolder.Name then
    					' Si oui on tente desesperement d'attribuer les droits
    					Set objACE.Trustee.Name = objSubfolder.Name
    					end if
    			   next
    J'ai tenté d'utiliser FILEACL.exe pour remplacer mes zibouibouis mais je n'arrive pas à le lancer à partir de mon script, si je le lance seul directement via un shell cela fonctionne.
    Je me demandais s'il ne manquait pas une librairie ou un truc du genre ?
    (J'ai placé dans le repertoire de mon script les fichiers exe et com de FILEACL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' Intégration de FILEACL pour la gestion des droits sur les dossiers (http://www.gbordier.com)
    Set Shell = Wscript.CreateObject("WScript.Shell")
    Shell.Run "I:\Scripting\ACL\fileacl c:\Temp /LINE /SIMPLE /SUB:1 > I:\Scripting\ACL\ACLInfos.txt"
    Voilà, j'espères que quelqu'un connaissant la façon d'attribuer des droits pourras me renseigner, que ce soit en utilisant WSH ou FILEACL.

    Et au passage je me demandais s'il fallait casser l'héritage du parent avant d'attribuer des droits ? (je l'ai fait à la main pour mes tests mais ça ne change rien)
    Pour info ce lien donne de précieuses informations mais je suis un peu perdu entre toutes les dépendances et certains avertissements sur la gestion complexes des ACLs.

    D'avance merci d'avoir retenu votre respiration tout au long de ce post bien longuet et bon code à tous

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je ne sais pas ce que représente objSD (pas la construction ou la recup dnas le code donné).
    Tu construit arrACEs à partir d'une methode ou propriété de objSD.
    Donc je pense que ton problème est simple, tu ne doit pouvoir modifié les droits uniquement que parce que tu essayes d'ecrire dans une propriétés qui est en lecture seul.
    Va sur le site msdn et regarde si la propriété de l'objet est en lecture seul ou non ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    C'est exact pas de référence à objSD :s c'est une ré-utilisation de code et je n'ai pas le script intégral à disposition en ce moment mais je te remercie beaucoup pour ton aide, je regarderais ça demain

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    En me baladant un peu je suis (re) tombé sur cette page:

    Cela me semblait un peu disproportionné mais ça marche trés bien pour:
    • Ajouter de nouveaux Droits
    • Remplacer des Droits
    • Bloquer ou permettre l'héritage


    Pour l'utilisation, il suffit d'utiliser les fonctions comme décrit tout en bas du fichier.

    Je vais pouvoir mettre un TAG résolu même si je n'ai pas tout compris au moins c'est fonctionnel

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Avant de mettre en résolu poste ton code final, cela peut aider d'autre personne, un exemple adapté dasn un cas précis peut être un exemple interessant.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Arf tu as raison, c'est un oubli,du coup je vais attendre de finaliser ce que je voulais exactement faire pour le poster. @ suivre

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Merci

    En plus une fois ton code posté certain ici te feront peut être des critiques constructives

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    J'espères bien

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Voilà un début j'espères que ça pourras rendre service à quelqu'un...

    Insèrez avant l'intégralité du code trouvé ici
    Objectif:
    Vérifier/Replacer les droits des utilisateurs sur leurs répertoires.

    Contexte:
    Les dossiers des utilisateurs sont dans un même repertoire, leurs noms correspondent exactement au nom des users (Casse identique).
    Les droits sur AD sont nécessaire pour la bonne execution de ces scripts.

    A Faire:
    • Trouver le moyen d'avoir une interface (semi)graphique et mettre en place les entrées utilisateur.
    • Générer des rapports.
    • Vérifier l'existence des utilisateurs avant d'appliquer les droits.
    • Gestion des erreurs.
    • Si le temps le permet, trouver l'assassin de JFK et d'où vient le vent.


    Pitoresque
    J'utilise des sorties sur IE, je m'excuse bien bas d'avance aux puristes mais faisant du dev web ça m'a parût comment dirais-je... naturel (et fun )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    Set objExplorer = WScript.CreateObject ("InternetExplorer.Application")
    objExplorer.Navigate "about:blank"
    objExplorer.ToolBar = 0
    objExplorer.StatusBar = 0
    objExplorer.Width = 600
    objExplorer.Height = 800
    objExplorer.Left = 20
    objExplorer.Top = 20
    ' Temporisation pour laisse le temps à IE de se charger
    Do While (objExplorer.Busy)
    	Wscript.Sleep 200
    Loop
    ' Affichage de l'objet IE à l'ecran
    objExplorer.Visible = 1
    objExplorer.Document.WriteLn "<title>Logs</Title>"
    objExplorer.Document.WriteLn "<body bgcolor=#000066>"
    objExplorer.Document.WriteLn "<div><font size=2 face=""Arial"" color=white>Autorisations :</div>"
     
    ' Création de l'objet collection de repertoires
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("c:\Temp\TestWSH")
    ' Création de la collection des sous répertoires
    Set colSubfolders = objFolder.Subfolders
     
     
    ' Parcours des sous répertoires
    For Each objSubFolder in colSubfolders
    	strFolderName = objFolder & "\" & objSubfolder.Name
    	objExplorer.Document.WriteLn "<br><font color=yellow>" & strFolderName & "</font><br>"
    	' 
    	'SE_DACL_PRESENT = &h4
    	ACCESS_ALLOWED_ACE_TYPE = &h0
    	ACCESS_DENIED_ACE_TYPE  = &h1
    	FILE_ALL_ACCESS         = &h1f01ff
    	FOLDER_ADD_SUBDIRECTORY = &h000004
    	FILE_DELETE             = &h010000
    	FILE_DELETE_CHILD       = &h000040
    	FOLDER_TRAVERSE         = &h000020
    	FILE_READ_ATTRIBUTES    = &h000080
    	FILE_READ_CONTROL       = &h020000
    	FOLDER_LIST_DIRECTORY   = &h000001
    	FILE_READ_EA            = &h000008
    	FILE_SYNCHRONIZE        = &h100000
    	FILE_WRITE_ATTRIBUTES   = &h000100
    	FILE_WRITE_DAC          = &h040000
    	FOLDER_ADD_FILE         = &h000002
    	FILE_WRITE_EA           = &h000010
    	FILE_WRITE_OWNER        = &h080000
     
    			' Instanciation de l'objet permettant de lire les DACLs
    			Set objWMIService = GetObject("winmgmts:")
    			Set objFolderSecuritySettings = _
    			objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")
    			intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)
    			intControlFlags = objSD.ControlFlags
     
    			' Teste si l'objet peut admettre des paramètres de sécurité
    			If intControlFlags AND SE_DACL_PRESENT Then
    			arrACEs = objSD.DACL
     
    			' Affiche les DACLs des sous repertoires
    			'For Each objACE in arrACEs
    			' On affiche le DACL en cours et on met en évidence les autaurisations existantes
    			'objExplorer.Document.WriteLn objACE.Trustee.Domain & " - " & objACE.Trustee.Name				  
    				'If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
    					'objExplorer.Document.WriteLn vbTab & "<font color=cyan> Allowed</font><br>"
    				'ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
    					'objExplorer.Document.WriteLn vbTab & "<font color=tomato> Denied</font><br>"
    				'End If
    			'Next
     
    			' (Ré-)initialisation de la variable indiquant s'il est nécessaire d'appliquer les droits
    			VarUserDACL="NO"
    			' Teste si un DACLs correspond au nom du repertoire
    			' ATTENTION SENSIBLE A LA CASSE
    			for Each objACE in arrACEs
    			objExplorer.Document.WriteLn vbTab & objACE.Trustee.Name & ">>" & objSubfolder.Name & "<br>"
    				if objACE.Trustee.Name = objSubfolder.Name then
    					VarUserDACL="YES"
    				end if
    			next
     
    			if VarUserDACL="NO" then
    				objExplorer.Document.WriteLn vbTab & "<font color=tomato>Correspondance absente</font><br>"
    				AddAce strFolderName,"NomdeDomaine\" & objSubfolder.Name,ADS_RIGHT_STD_MODIFY,ADS_ACETYPE_ACCESS_ALLOWED,ADS_ACEFLAG_FOLDER_SUBFOLDERS_FILES
    				DenyInheritance strFolderName
    				objExplorer.Document.WriteLn vbTab & "<font color=yellow>Correspondance MISE A JOUR</font><br>"
    			else
    				objExplorer.Document.WriteLn vbTab & "<font color=cyan>Correspondance trouvée</font><br>"
    			end if
     
    			Else
    			   WScript.Echo "No DACL present in security descriptor"
    			End If
    Next
     
    objExplorer.Document.WriteLn vbTab & "<br><font color=tomato>----- FIN DE TRAITEMENT -----</font><br>"

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Trouver le moyen d'avoir une interface (semi)graphique et mettre en place les entrées utilisateur.
    -> regarde du coté des contributions en VBS, je me souviens avoir vu une contribution permettant de faire une petite IHM en VBS.

    Générer des rapports.
    Facile, regarde par ici :
    http://www.activexperts.com/activmon.../filesfolders/
    Il y a plein d'exmple de scripts pour manipuler les fichiers et les répertoires.
    Quand à écrire dans un fichier, regarde du coté de FileSytemObject. Dans la ou à l'aide de . C'est facile à trouver.

    Gestion des erreurs.
    Tu peux utiliser le et l'objet Err. Dans la Faq encore, ou facile à trouver sur google

    trouver l'assassin de JFK
    Facile c'est moi

    d'où vient le vent
    Vibration des molécules d'air. Si si, une molécule d'air bouge, ses forces de vanderMachin (oubliez le nom ) vont faire que les molécules proches vont s'en éloigner, et ainsi de suite avec les autres molécules d'air.
    D'où l'idée de l'effet papillon : un mouvement de la main entraine un ouragan à l'autre bout du monde
    Enfin ce principe oublis un peu toutes les forces contraires que peuvent subir les moléculaires d'airs à cause d'autre mouvement d'air

    Bon tu fais tout cela qd tu peux, un peu de vérification pour trouver les bugs, et je pense que cela méritera de se retrouver dans les contributions

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par ced600 Voir le message
    -> regarde du coté des contributions en VBS, je me souviens avoir vu une contribution permettant de faire une petite IHM en VBS.
    Ok ça m'interresse, mais je crois que dans un premier temps je vais faire une interface Web, je pourrais ainsi l'intégrer à l'Intranet

    Facile c'est moi
    N'accepte aucun pm de ma part te demandant tes coordonnées GGGggrrrrrRRR

    Vibration des molécules d'air. Si si, une molécule d'air bouge, ses forces de vanderMachin (oubliez le nom ) vont faire que les molécules proches vont s'en éloigner, et ainsi de suite avec les autres molécules d'air.
    D'où l'idée de l'effet papillon : un mouvement de la main entraine un ouragan à l'autre bout du monde
    Enfin ce principe oublis un peu toutes les forces contraires que peuvent subir les moléculaires d'airs à cause d'autre mouvement d'air
    Ha ? j'avais imaginé un truc de pressions atmosphérique inégalement réparties sur la surface du globe et soumises à pressions de masses volumiques (reliefs ect..) mais bon vanderTruc ça doit être un cador on va lui faire confiance

    Aller hop je m'y recolle entre deux inters, encore merci pour ton aide.

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Les forces de Van der Waals:
    http://en.wikipedia.org/wiki/Van_der_Waals_force
    La partie anglaise est mieux faite, mais bon Wiki propose un page française.

    Ceux sont des forces qui rentrent en jeu d'un point de vue moléculaire, atomique. Elles sont faibles et n'affectent les atomes que sur des courtes distances. Bref quand deux atomes s'approchent, à cause de ses forces ils vont avoir tendances à se repousser.
    Sans prendre en compte les forces électromagnétiques bien sûr. Ces dernières peuvent aller dans le même sens que les forces de Van der Waals ou dans le sens contraire.

    Bref les forces de Van Der Waals sont une des causes de la répulsion existante entre deux atomes. Sachant qu'elles sont d'autant plus puissante que les atomes sont proches.
    Normalement elles ont un reélles impactes que sur un rayon très faibles autour de l'atome.

    Si je ne me trompe pas, ces forces de répulsions aident à la définition de la distance entre deux atomes lorsqu'une liaison chimique s'établit entre eux.

    Ha j'ai des trous de mémoires, j'ai quitté la biologie depuis trop longtemps.

    Bref tout cela pour dire que le déplacement d'un atome va avoir un impact sur les autres atomes, car en se rapprochant d'eux il augmente l'impact des force de Van der Waals.

    Alors donc imagine ta main consitué de milliards d'atomes qui brassent l'air composé en majorité d'atomes d'azotes. Un nombres incroyable d'atomes qui bougent !!! Et qui vont faire bouger les autres. D'ailleurs lorsque tu brasses l'air ainsi proche du visage de quelqu'un d'autre (mais non pas un giffle, je parle de ventilation manuelle ) il va sentir le mouvement d'air.

    Donc le vent c'est cela, le déplacment des molécules d'airs. Enfin je te l'accorde il n'y a pas que les forces de Van der Waals qui rentrent en jeu. Mais elles font parties du lot

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Points : 8
    Points
    8
    Par défaut


    Van der Waals nous apporte un peu de fraicheur dans ce monde de bits.

    Sinon côté script j'ai fait ce que tout être normalement constitué ne doit pas faire: changer les 3/4 "juste pour tester un truc" et l'ensemble est en vrac...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Is applet.Windows.time = heure de rentrer maison ?
    Outpout: Yes it Is !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call function GoBackHome&ForgetWork("Bonne Soirée","à tous")

  14. #14
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    lol

Discussions similaires

  1. Script modification des droits sur un dossier
    Par Hurycanrana dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 03/03/2010, 10h35
  2. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  3. Récupération des droits sur un dossier/fichier
    Par el_pedro dans le forum Langage
    Réponses: 9
    Dernier message: 27/08/2008, 15h11
  4. [C#] Prendre des droits sur des dossiers et sous dossiers
    Par raf_unl dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/03/2007, 13h44
  5. Réponses: 1
    Dernier message: 16/10/2006, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo