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

VB.NET Discussion :

Modification de droits des dossiers


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut Modification de droits des dossiers
    Bonjour à tous,

    J'ai besoin de créer des dossiers avec des droits spécifiques.

    Pour ceci, je créé donc le dossier et avant de lui ajouter les droits qui vont bien, je veux supprimer les droits hérités des dossiers parents.
    J'ai donc chercher un peu et pondu ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub resetRightAccess(ByVal folder As String)
       Dim tDoss As New DirectoryInfo(folder)
       Dim tSecurite As DirectorySecurity = tDoss.GetAccessControl()
       For Each anAccessRule In tSecurite.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
           tSecurite.RemoveAccessRule(anAccessRule)
        Next
        tDoss.SetAccessControl(tSecurite)
    End Sub
    Sauf que...les droits sont toujours là après passage dans la fonction.
    J'ai vérifié en pas à pas, il boucle bien sur les droits existants et la fonction renvoie bien True...signe que normalement, la règle s'est supprimée sans encombres.

  2. #2
    Membre expérimenté Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Par défaut
    Salut,

    J'ai fait un truc semblable y'a pas très longtemps et j'avais bloqué exactement au même point. J'ai par contre réussi à faire fonctionner le tout.

    Pour retirer les accessRule essaie comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each Rule As AccessRule In dSecurity.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
    	dSecurity.PurgeAccessRules(Rule.IdentityReference)
    Next
    Dans mon cas, comme je voulais seulement supprimer certains droits en particulier, tu utilise purgeAccesRules en y instanciant un NTAccount.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dSecurity.PurgeAccessRules(New Principal.NTAccount("tout le monde"))
    dSecurity.PurgeAccessRules(New Principal.NTAccount("Administrateurs"))
    dSecurity.PurgeAccessRules(New Principal.NTAccount("CREATEUR PROPRIETAIRE"))
    dSecurity.PurgeAccessRules(New Principal.NTAccount("SYSTEM"))
    dSecurity.PurgeAccessRules(New Principal.NTAccount("pRQ-AdmNTPoste"))
    dSecurity.PurgeAccessRules(New Principal.NTAccount("Utilisateurs"))
    J'admets que c'Est peut-être barbare de tout claquer pour ensuite ajouter ce qu'on veut mais j'ai pas trouvé mieux

    Ensuite, pour ajouter des droits spécifique tu fait comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Directory.SetCurrentDirectory(Directory.GetCurrentDirectory & "\Documents non chiffrés")
     
    'Application de la sécurité
    applySecurity(Directory.GetCurrentDirectory(), "Utilisateurs authentifiés", FileSystemRights.Read, AccessControlType.Allow, True)
    applySecurity(Directory.GetCurrentDirectory(), "Utilisateurs authentifiés", FileSystemRights.WriteExtendedAttributes, AccessControlType.Allow, True)
    applySecurity(Directory.GetCurrentDirectory(), "Utilisateurs authentifiés", FileSystemRights.CreateFiles, AccessControlType.Allow, True)
    applySecurity(Directory.GetCurrentDirectory(), "Utilisateurs authentifiés", FileSystemRights.WriteAttributes, AccessControlType.Allow, True)
    applySecurity(Directory.GetCurrentDirectory(), "Utilisateurs authentifiés", FileSystemRights.WriteData, AccessControlType.Allow, True)
    applySecurity(Directory.GetCurrentDirectory(), "Utilisateurs authentifiés", FileSystemRights.DeleteSubdirectoriesAndFiles, AccessControlType.Allow, True)
    applySecurity(Directory.GetCurrentDirectory(), "prod\pRQ-AdmUniteAmovible", FileSystemRights.FullControl, AccessControlType.Allow, True)
    ET la fonction applySecurity
    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
     
    Public Sub applySecurity(ByVal file As String, ByVal user As String, ByVal rights As FileSystemRights, ByVal controlType As AccessControlType, ByVal isChild As Boolean)
    	Dim dInfo As DirectoryInfo
    	Dim dSecurity As DirectorySecurity
     
     
    	If Directory.Exists(file) Then
    		'Récupération des info du répertoire
    		dInfo = New DirectoryInfo(file)
    		'Récupération des contrôles d'Accès du répertoire
    		dSecurity = dInfo.GetAccessControl()
    		'Application d'une règle d'accès au répertoire 
     
    		Try
    			dSecurity.SetAccessRuleProtection(True, True)
    			If isChild Then
    				'Si on passe true dans isChild, on active l'héritage des droits du container ou de l'objet
    				dSecurity.AddAccessRule(New FileSystemAccessRule(user, rights, InheritanceFlags.ObjectInherit Or InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, controlType))
    				dInfo.SetAccessControl(dSecurity)
    			Else
    				dSecurity.AddAccessRule(New FileSystemAccessRule(user, rights, InheritanceFlags.None, PropagationFlags.None, controlType))
    				dInfo.SetAccessControl(dSecurity)
    			End If
     
    		Catch ex As Exception
    			MsgBox(ex.Message)
    		End Try
    	End If
    End Sub
    Dans mon cas, les dossiers et fichiers enfants devaient hériter des droits et accès du conteneur parent. Donc, je mettais isChild à true lorsque c'était des dossier enfants.

    Il existe peut-être une manière plus clean mais comme le dossier était pressant j'ai du utiliser la première méthode fonctionnelle que j'ai trouvée, et tu t'imagine même pas à quel point j'ai cherché.

    En espérant que ca va t'aider

  3. #3
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Salut,

    Merci pour ta réponse. J'avais déjà essayé cette technique qui ne fonctionne pas non plus pour moi...
    J'ai essayé (je pense) toutes les fonctions fournies dans DirectorySecurity qui pouvaient supprimer les droits mais rien

    Par contre pour ajouter les droits, aucun soucis...

  4. #4
    Membre expérimenté Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Par défaut
    Ta essayé de jouer sur la protection des règle d'accès?

    Car si tu utilise SetAccessRuleProtection et que tu lui passe false pour preserveInheritance ca donne : false pour supprimer des règles d'Accès héritées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        dSecurity.SetAccessRuleProtection(True, False)

  5. #5
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    merci beaucoup, cela fonctionne parfaitement.

  6. #6
    Membre expérimenté Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Par défaut
    Ca fait plaisir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème sur la gestion des droits des dossiers
    Par PAYASS59 dans le forum Administration-Migration
    Réponses: 3
    Dernier message: 25/11/2013, 16h40
  2. Droit des dossiers via commande
    Par Thomas54 dans le forum Windows
    Réponses: 1
    Dernier message: 08/03/2013, 10h52
  3. les droits des dossiers d'un setup
    Par jejemimi dans le forum Visual Studio
    Réponses: 0
    Dernier message: 08/06/2011, 06h22
  4. .htaccess pour les droits des dossiers ?
    Par Invité dans le forum Apache
    Réponses: 2
    Dernier message: 19/02/2008, 13h48
  5. [Installation] Gestion des droits par dossier ?
    Par Glob dans le forum CVS
    Réponses: 3
    Dernier message: 13/03/2006, 16h04

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