1 votes

Donner à une application des droits sur les liens symboliques dans un répertoire sous Windows

Je ne connais pas bien les permissions de Windows, mais y a-t-il un moyen de donner à un script ou à une application la permission de créer des liens symboliques qui ne sont liés qu'à l'intérieur d'une arborescence de répertoires que disons une application "possède" ? (Les liens vivent dans l'arbre, tout comme les cibles).

Note : Je ne veux pas donner les droits d'administrateur au script.

1voto

CBHacking Points 5749

Rien n'est intégré, désolé. Vous pourriez donner à l'utilisateur qui exécute le processus (que ce soit vous-même ou un autre compte) le privilège SeSymbolicLink, ce qui permettrait de créer des liens symboliques sans donner d'autres accès de niveau administrateur. Les liens symboliques ne peuvent être créés que dans les endroits où ce compte peut créer un fichier, et les contrôles d'accès normaux s'appliquent toujours (si le lien symbolique pointe vers un fichier que vous pouvez lire mais pas écrire, vous pourrez le lire par le biais du lien symbolique mais ne pourrez toujours pas y écrire). J'espère que c'est assez sûr ; la seule raison pour laquelle les liens symboliques nécessitent un privilège spécial sous Windows est qu'ils n'étaient pas disponibles avant Vista, donc beaucoup d'anciens programmes ne les gèrent pas correctement, en particulier pour des choses comme les boucles de répertoire ou d'autres mauvaises idées.

Pour permettre à un utilisateur donné de créer des liens symboliques (en lui donnant SeSymbolicLinkPrivilege), procédez comme suit :

  1. Exécutez l'éditeur de politique de sécurité locale ( secpol.msc ). Elle nécessitera un accès en tant qu'administrateur.
  2. Regardez sous "Local Policies" -> "User Rights Assignment". Trouvez l'entrée "Créer des liens symboliques".
  3. Double-cliquez sur l'entrée pour l'ouvrir, puis appuyez sur [Add User or Group...] .
  4. Dans la boîte qui apparaît, tapez votre nom d'utilisateur Windows et appuyez sur [Check Names] . Il devrait se transformer en un nom entièrement qualifié, avec un soulignement. Si ce n'est pas le cas, vous devez essayer d'autres formes du nom d'utilisateur. Vous pouvez également cliquer sur [Advanced] pour rechercher une liste d'options.
  5. Une fois que le nom de l'utilisateur est souligné dans la boîte, appuyez sur [OK] dans la fenêtre "Sélectionner les utilisateurs et les groupes", puis appuyez sur [OK] dans la fenêtre "Propriétés du lien symbolique".
  6. Si l'utilisateur en question est connecté, déconnectez-vous et reconnectez-vous. Cet utilisateur devrait maintenant être en mesure de créer des liens symboliques sans avoir besoin des privilèges d'administrateur.

Une autre option consiste à utiliser des liens durs NTFS. Contrairement aux liens symboliques, tout utilisateur est autorisé à créer un lien dur (par défaut). Cependant, également à la différence des liens symboliques (et à la différence des liens durs POSIX), vous ne pouvez pas créer un lien dur à moins d'avoir une permission spécifique (Attributs d'écriture ? Quelque chose dans la catégorie générale de "Write") sur le fichier de destination. Ainsi, si vous avez seulement besoin de lier des fichiers (pas des répertoires), et que vous avez un accès en écriture sur les fichiers en question, vous pouvez probablement utiliser les hardlinks sans problème (ils fonctionnent comme les hardlinks POSIX, en suivant le noeud de fichier plutôt que le nom de fichier, et si vous supprimez le "fichier original" mais pas le lien, les données ne sont pas supprimées jusqu'à ce que vous supprimiez également le lien).

Si vous avez également besoin d'établir des liens entre les répertoires, vous pouvez - comme le suggère @WesSayeed - utiliser des jonctions NTFS. Ils sont plus difficiles à créer par programme (mais faciles à créer à partir d'un script) mais fonctionnent bien pour la plupart des objectifs pour lesquels vous pourriez normalement utiliser un lien symbolique de répertoire.

0voto

Wes Sayeed Points 13188

Un utilisateur normal n'a pas besoin d'autorisations spéciales pour créer des jonctions (qui sont très similaires aux liens symboliques de répertoire).

Vous pouvez le constater par vous-même en ouvrant une invite de commande (sans élévation), et en tapant mklink /j <link> <target> (en remplaçant les noms de lien et de cible par le répertoire de votre choix). Vous verrez que cette commande réussit même si vous n'avez pas les droits d'administrateur. Vous ne serez toujours pas en mesure de utiliser le lien si vous n'avez pas les droits sur la cible, cependant.

Il suffit d'utiliser le mklink dans un script et cela fonctionnera bien.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X