J'ai remarqué si vous modifiez les paramètres de sécurité d'un répertoire particulier, vous pouvez faire ce dossier ne plus "navigable" sous Windows. En particulier, la modification de la permission de "lire" pour les administrateurs de "nier" rendra ce dossier inaccessible.
La question que j'ai maintenant, c'est comment puis-je comprendre cela dans le code? Je suive ma fermeture, mais ce n'est toujours pas raison: p> Je suis proche de ce qui précède, mais je manque toujours quelque chose d'énorme. Si je cliquez avec le bouton droit de la souris sur un dossier pour définir des autorisations, je vois (dans mon exemple) 3 groupes ou noms d'utilisateur: "Administrateurs, MyAsername et System". Si je fixe la "lecture" à refuser pour "administrateurs" ou "MyAsername", je ne peux plus naviguer dans le répertoire. Si je fixe uniquement "système" pour "nier", je peux toujours le parcourir. p> Il semble y avoir une sorte de hiérarchie de permission implicite, où le nom de MyAserSern ou l'administrateur remplace le groupe système / utilisateur. P> Le code ci-dessus recherche le premier permis de "lire" trouve pour mon identité d'utilisateur et retourne vrai. Je pourrais également écrire du code qui recherche le premier "nie" pour lire et retourne false. P> Je peux définir un dossier à lire - "nier" pour le système et lire - "Autoriser" pour les deux autres comptes et toujours lire le dossier. Si je change le code pour rechercher Deny's et qu'il rencontre d'abord l'identité de l'utilisateur du système, ma fonction reviendra "False", qui est ... Faux. Il pourrait très bien être lu - "Autoriser" pour les deux autres comptes. P> Le problème que je ne peux toujours pas comprendre est, comment puis-je déterminer quelle autorisation d'identité de l'utilisateur a la priorité sur tous les autres. ? p> p>
3 Réponses :
Il devient très délicat, car les ACL permettent l'héritage, mais ils ont également un modèle d'accès le plus restrictif. En d'autres termes, si vous avez nié n'importe où dans votre chaîne d'utilisateurs à une ressource, peu importe le nombre d'autres groupes peut vous donner une autorisation, vous êtes refusé. Il existe un bon article sur le subect sur MSDN . P >
Le groupe système est lié au processus O / S et non directement lié à votre compte d'utilisateur. C'est ce que l'O / S utiliserait pour accéder au système de fichiers s'il n'y avait pas de contexte utilisateur. Étant donné que votre application est en cours d'exécution comme votre "nom d'utilisateur", les autorisations proviennent de lui et des groupes. Ne pensez pas que vous devez vérifier le système dans ce cas à moins que je ne manque de quelque chose. P>
J'ai à la fois "lire" et "liste des contenus" défini sur Deny pour mon utilisateur actuel pour un répertoire. Je ne peux pas double-cliquer sur ce répertoire. Si j'essaie (mydirectoryinfo.exists), il apparaît comme "vrai". Hmmm ... ne semble pas fonctionner ... ne fonctionne pas non plus avec (annuaire.exists ()))
Intéressant, dit Si vous n'avez pas à une autorisation minimale en lecture seule sur le répertoire, la méthode existante reviendra de faux. I> Cela signifie peut-être lire des autorisations dans le dossier parent puisque vous pouvez voir le répertoire mais pas le contenu de celui-ci.
Le problème n'est pas une hiérarchie de permission. Le problème est que votre code revient vrai ou faux sur la base du premier rôle de correspondance. Vous devez vraiment évaluer toutes les autorisations. P>
J'ai récemment dû faire face à ce problème ... J'ai posté mon code ici . p>
"La ressource que vous recherchez a été supprimée, a changé son nom, ou est temporairement indisponible." Pourriez-vous le poster comme une réponse réelle, à l'instar des directives afin de vous demander?
Le compte système n'est qu'un compte régulier, ne le traitez pas spécialement. Il est utilisé par les services.