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

C# Discussion :

[C#] [droit] Problème d'accès à un répertoire contenu dans un répertoire partagé


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 68
    Points
    68
    Par défaut [C#] [droit] Problème d'accès à un répertoire contenu dans un répertoire partagé
    Bonjour,

    J'ai un petit soucis concernant les gestion des droits en C#. J'arrive a affecter les droits sur un répertoire sur ma machine en local sans problème.
    Ce répertoire en question est situé dans un repertoire partagé :

    [Rep1] --> Répertoire partagé
    |
    |__ [Rep2]

    Lorsque j'accède à ce répertoire depuis mon disque dur C: , je n'ai aucun soucis j'y affecte les droits qui vont bien et je fais ce que je veux création suppression , ce qui correspond au control total.

    Ce qu'il y a d'etrange c'est que lorsque je fais un click droit -- > propriété --> sécurité, je n'ai pas les check box correspondants au droit que je lui ai affecté via mon code c#. Par contre, si je clique sur le bouton Paramètre avancé, je vois parfaitement que mon user à les droits qui correspondent à ce que j'ai mis dans mon code. Je fais cela via le code suivant :

    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
     // Adds an ACL entry on the specified directory for the specified account.
            public void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
            {
                // Create a new DirectoryInfo object.
                DirectoryInfo dInfo = new DirectoryInfo(FileName);
     
                // Get a DirectorySecurity object that represents the 
                // current security settings.
                DirectorySecurity dSecurity = dInfo.GetAccessControl(AccessControlSections.Access);
     
                //// Add the FileSystemAccessRule to the security settings.             
                dSecurity.AddAccessRule(new FileSystemAccessRule(Account,Rights,InheritanceFlags.None,PropagationFlags.InheritOnly,ControlType));
     
                // Set the new access settings.
                dInfo.SetAccessControl(dSecurity);
     
            }
    Autre soucis quand j'essaie d'accéder à ce même répertoire mais en passant pour le partage via la commande suivante sous un explorateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \\nomMachine\Rep1\Rep2.
    Je n' accède plus au répertoire et je ne peux plus y faire quoique ce soit.

    Cela est surement du au fait que ce répertoire est situé dans un répertoire de partage et qu'il faut donc mettre des droits de partage spécifique.
    Seulement je ne sais pas comment faire.

    J'ai qq contraintes :
    le répertoire [Rep2] ne peut pas être lui même partagé. Le répertoire [Rep2] possède une seul personne sur le répertoire qui possède un control total.

    Comment puis je faire.

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Attention, fais tu bien la difference entre les droits de partage et les droits d'acces (NTFS)
    Pour les details, cherche tout seul !

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    bonjour,

    oui je connais la différence entre les droits de partage et droits NTFS , c'est bien pour cela que ca m'etonne de ne pas voir les case à cocher verte au niveau des ACLs NTFS du répertoire [Rep2].

    Pour que je puisse acceder à Rep2 en passant par le réseau je suis obliger de donner des droits sur le répertoire partage (droit de partage) [Rep1] puis de
    limiter les droits NTFS sur le Répertoire [Rep2] qui lui n'est pas partagé.

    L'idée est de mettre les droits minimum sur le répertoire partagé [modification]
    pour tout le monde , droit de lecture ne suffise pas. Sur le répertoire [Rep2] droit NTFS sur un seul user avec control totale. Dans ce cas ci, mon user accède au [Rep2] via partage reseau ou disque local.

    Cependant , je ne comprends toujours pas pkoi, je ne vois pas les cases cocher sélectionner dans les ACL droits NTFS du repertoire [rep2] avec le code que j'ai mis dans la question de départ. Il s'agit bien via ce code d'affectation de droit de NTFS et non de droit de partage.

    Qqun à une idée ?

    Merci.

  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Pour voir les cases à cocher dans la fenêtre propriété j'ai remplacer le code en rouge :

    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
    // Adds an ACL entry on the specified directory for the specified account.
            public void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
            {
                // Create a new DirectoryInfo object.
                DirectoryInfo dInfo = new DirectoryInfo(FileName);
     
                // Get a DirectorySecurity object that represents the 
                // current security settings.
                DirectorySecurity dSecurity = dInfo.GetAccessControl(AccessControlSections.Access);
     
                //// Add the FileSystemAccessRule to the security settings.             
                dSecurity.AddAccessRule(new FileSystemAccessRule(Account,Rights,InheritanceFlags.None,PropagationFlags.InheritOnly,ControlType));
                // Set the new access settings.
                dInfo.SetAccessControl(dSecurity);
     
            }
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,PropagationFlags.None,
    et le résultat est impeccable

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2007, 17h43
  2. Réponses: 8
    Dernier message: 13/03/2007, 13h59
  3. Réponses: 6
    Dernier message: 25/10/2006, 21h00
  4. Accès aux valeurs contenues dans un objet
    Par WalidNat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/05/2006, 17h26
  5. [MS-DOS] Supprimer tout les sous répertoires contenu dans un
    Par Furius dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 30/11/2005, 12h24

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