web-dev-qa-db-fra.com

Donne accès à un sous-répertoire sans donner accès aux répertoires parents

J'ai un scénario impliquant un serveur de fichiers Windows dans lequel le "propriétaire" souhaite distribuer des autorisations à un groupe d'utilisateurs du type suivant:

  • \\server\dir1\dir2\dir3: lire, écrire et exécuter
  • \\server\dir1\dir2: pas de permissions
  • \\server\dir1: pas de permissions
  • \\server: lire et exécuter

À ma connaissance ( Mise à jour : Tout ce paragraphe est faux!), Il n’est pas possible de le faire car l’autorisation Read & Execute doit être être accordé à tous les répertoires parents d'une chaîne de répertoires afin que le système d'exploitation puisse "voir" les répertoires enfants et y accéder. Sans cette autorisation, vous ne pouvez même pas obtenir le jeton de contexte de sécurité lorsque vous tentez d'accéder au répertoire imbriqué, même si vous disposez d'un accès complet au sous-répertoire.

Nous cherchons des moyens de résoudre ce problème sans déplacer les données de \\server\dir1\dir2\dir3 à \\server\dir4.

Une solution de contournement à laquelle j'ai pensé, mais que je ne sais pas si cela fonctionnera, consiste à créer une sorte de lien ou de jonction \\server\dir4, qui est une référence à \\server\dir1\dir2\dir3. Je ne sais pas laquelle des options disponibles (le cas échéant) fonctionnerait à cette fin si l'utilisateur ne dispose pas de l'autorisation Read & Execute sur \\server\dir1\dir2 ou \\server\dir1, mais pour autant que je sache, les options sont les suivantes:

  • Lien symbolique NTFS,
  • Jonction,
  • Lien dur.

Alors les questions:

  • Certaines de ces méthodes sont-elles appropriées pour atteindre mon objectif?
  • Existe-t-il d'autres méthodes permettant de lier ou de référencer indirectement un répertoire, que je n'ai pas énumérées ci-dessus, qui pourraient convenir?
  • Existe-t-il des solutions directes n'impliquant pas l'attribution de Read & Execute à \\server\dir1 ou \\server\dir2 mais tout en permettant l'accès à \\server\dir1\dir2\dir3?
11
allquixotic

Vous vous trompez dans votre hypothèse initiale, ce qui rend le reste de votre question théorique.

La permission minimale dont un utilisateur aurait besoin sur dir1 et dir2 est Traverse Directory. Ce sera probablement problématique pour vos utilisateurs, cependant - donc je recommanderais Traverse Directory et List Folders. Ils pourront naviguer dans les deux premiers répertoires et accéder à dir3 où ils disposent de plus d'autorisations, mais ils ne verront même pas quels fichiers existent dans les deux premiers répertoires.

Les autorisations telles que Read & Execute et Modify ne sont que des collections d'autorisations individuelles. Ils sont la première chose que vous voyez, car ils sont les plus couramment utilisés. Si vous avez besoin d’être très granulaire (comme dans cette situation), cliquez sur le bouton Advanced et sélectionnez les options répertoriées ici.

13
MDMarra

Étonnamment, si l’individu a le chemin complet d’un sous-dossier sur lequel il a au moins les autorisations R, il n’exige AUCUNE autorisation sur l’un des dossiers parents, même pas sur celui-ci. Ils peuvent simplement y accéder à l'aide de l'UNC. (Ils doivent bien sûr avoir les autorisations de lecture sur le partage; mais pas sur les dossiers supérieurs au niveau auquel ils veulent accéder).

Je n'y croyais pas quand on me l'a dit, mais les tests le prouvent.

Cela va à l'encontre de ce que je pensais connaître des autorisations dans le monde Windows, et je suppose que cela sera une surprise pour beaucoup.

\ server\folder1\folder2\folder3

S'il n'y a aucune permission pour Bilbo sur folder1 et sur folder2, alors que Bilbo a modifier (par exemple) sur folder3,\server\folder1\folder2\folder3 le mènera là, pas de problème.

12
embeetee

Une solution similaire à MDMarra consiste à définir les autorisations NTFS comme suit:

  1. dir1 : Accorder la liste du contenu du dossier (dossier de cheminement/fichier d'exécution, dossier de liste/lecture de données, lecture attributs, lire les attributs étendus, autorisations de lecture)
  2. MAIS sélectionnez ce dossier uniquement dans le menu déroulant Appliquer à
  3. dir2 : Accorder la liste du contenu du dossier et appliquer à Ce dossier uniquement
  4. dir3 : Accordez les autorisations de lecture/écriture souhaitées et appliquez-le à . Ce dossier, les sous-dossiers et les fichiers ou Sous-dossiers et fichiers uniquement

Le résultat final est que l'utilisateur/le groupe peut lire chaque dossier parent individuel et accéder au dossier enfant sans autres dossiers ou fichiers.

1
DrewsWiz

J'ai donc testé cela dans l'environnement suivant, car je souhaitais obtenir une réponse finale et testée avec le minimum d'autorisations requises pour parcourir simplement des dossiers en naviguant (c'est-à-dire via l'Explorateur de fichiers Windows). Voici les résultats pour ceux qui veulent verrouiller les choses.

J'ai pas testé cela en production pour voir s'il y a des effets secondaires bizarres de la réduction du modèle de droits de traversée "standard" de

  • Dossier de traversée
  • Dossier de liste
  • Lire les attributs
  • Lire Ext. Les attributs
  • Autorisations de lecture

... qui est fondamentalement juste des autorisations "Lire et exécuter" normales limitées à "Ce dossier". Cela dit, les tests à petite échelle ont été tout à fait satisfaisants pour les utilisateurs qui se contentent de déplacer, copier et supprimer des fichiers sur le serveur et pour les utilisateurs qui travaillent entièrement à partir des copies de documents sur serveur, etc.


Environnement:

  • Serveur : Windows 2008 R2 - Peu ou pas la stratégie de groupe, rien n'a changé en ce qui concerne les droits des utilisateurs, configuré en tant que contrôleur de domaine, DNS intégré à AD, configuration très standard/de base.
  • Client : Windows 7 SP1 - Nouvelle installation dans une machine virtuelle, redémarré entre les modifications pour garantir la La connexion au serveur a été entièrement recréée à chaque fois.
  • Les deux installations ont été corrigées au moins jusqu'à la fin de 2017, ce qui est probablement le cas pour tout ce qui concerne les autorisations très implémentées à ce stade de la timeline de Windows.
  • Cela consistait à accéder à un dossier partagé monté en tant que lecteur réseau persistant (\ server\share -> S :) dans la machine virtuelle. Les autorisations de partage étaient le groupe Lecture + Modification pour utilisateurs authentifiés, qui couvre l'utilisateur test et tous les autres susceptibles d'avoir besoin d'un accès à un moment donné.
  • Après chaque modification, je redémarrais la machine virtuelle, ouvrait l’explorateur de fichiers et parcourais simplement le partage normalement, en empruntant un chemin qui me permettait de savoir que l’utilisateur test disposait de ces droits de traversée par rapport à ceux qu’il ne possédait pas.

Résultats:

  • Obligatoire sur le dossier racine : ListFolder-ReadData + ReadAttributes (2x autorisations)
  • Obligatoire sur les sous-dossiers : ListFolder-ReadData (permission 1x)
  • Facultatif : TraverseFolder - ExecuteFile

    -> Cette autorisation facultative n'a d'importance que si le droit d'utilisateur Ignorer la vérification de parcours est explicitement interdit, car il est activé par défaut dans 99% des cas. En d'autres termes, le droit d'utilisateur "Contourner la vérification de contournement" (exposé dans la stratégie de groupe, et non dans les autorisations de fichiers/dossiers NTFS) activé supprime complètement ce privilège et rend ce privilège activé partout par défaut. Remarque: je n'ai pas testé pour voir si le refus explicite de ce droit empêcherait le droit de contrôle de contournement de contournement de prendre effet dans ce cas particulier, mais cela pourrait peut-être).

Information supplémentaire: Le droit d’utilisateur "Contourner la vérification de parcours" permet à une personne de parcourir de manière passive un sous-dossier, quelle que soit sa profondeur, à laquelle elle a directement accès (les autorisations sont définies sur ce fichier/dossier, mais pas nécessairement ailleurs. le chemin du fichier).

0
Rook