Je l'ai expliqué dans un article de blog http://think-like-a-computer.com/2011/07/24/moving-files-on-the-same-ntfs-volume-does-inherit-permissions/ mais il est également expliqué ci-dessous.
Lorsqu'un fichier est copié, il doit créer un nouveau fichier et lui affecter un nouvel ensemble d'autorisations, afin qu'il obtienne les autorisations du dossier parent comme vous le savez.
Lorsqu'un fichier est déplacé vers un autre volume, ce qui se passe réellement est qu'il est copié sur le nouveau volume et que l'ancien fichier est supprimé. Ainsi, le même processus est répété comme ci-dessus car il s'agit à nouveau d'un nouveau fichier et des autorisations doivent être définies.
Lorsque le fichier est déplacé dans le même volume, rien ne se passe vraiment (au niveau du disque). Il modifie simplement l'emplacement du chemin logique du fichier. Les données réelles et le fichier physique sur le disque n'ont pas été touchés ou modifiés. Avez-vous déjà remarqué que lorsque vous déplacez un fichier de 5 Go vers un autre dossier sur le même lecteur, cela se fait presque instantanément? C'est pourquoi, car il n'a en fait pas bougé mais le pointeur vers l'emplacement logique du fichier a changé. Comme il n'a été modifié d'aucune façon, les autorisations ne changent pas également.
C'est la raison de ce comportement.
Edit: quelque chose que j'ai oublié de mentionner ... L'article MS n'est pas tout à fait exact. Citation MS:
Par défaut, un objet hérite des autorisations de son objet parent, soit au moment de sa création, soit lorsqu'il est copié ou déplacé vers son dossier parent. La seule exception à cette règle se produit lorsque vous déplacez un objet vers un autre dossier sur le même volume. Dans ce cas, les autorisations d'origine sont conservées.
La citation ci-dessus s'applique uniquement aux objets qui ont reçu des autorisations SEC EXPLICITEMENT définies (désactivez l'héritage). Comme mentionné dans mes commentaires, il s'agit de maintenir les entrées ACL aussi efficaces que possible. Prenons l'exemple suivant:
Pour garder l'explication simple, supposons que vous ayez un ensemble de dossiers pour permettre aux utilisateurs de modifier les droits uniquement. En dessous, il y a des milliers de fichiers et aucun d'entre eux n'a défini d'autorisations explicites. Il n'est pas très efficace de créer des ACL pour chaque fichier car ce sont exactement les mêmes perms donc il définit UNE entrée ACL pour le dossier. Ce bit suivant est très IMPORTANT à comprendre; les fichiers eux-mêmes n'ont AUCUN ACL. Ainsi, lorsque vous déplacez l'un de ces fichiers dans un nouveau dossier dans le même volume, MS affirme que les perms se déplacent avec lui (comme ci-dessus). Demandez-vous ceci ... comment? Il n'y avait pas de perms sur le fichier en premier lieu pour traverser. C'est en fait incorrect et je viens de le tester maintenant pour le confirmer. Supposons que le dossier de destination vers lequel vous déplacez le fichier possède des autorisations pour autoriser le groupe tout le monde à modifier les droits uniquement. Eh bien, puisque le fichier n'a pas d'ACL directement, il hérite de l'ACL du dossier parent. Cela signifie que les perms sont passés des utilisateurs à modifier (ancien dossier) à tout le monde à modifier (nouveau dossier).
Remarquez la différence ?? Cette fois-ci, le déplacement d'un fichier vers un autre dossier du même volume a en fait changé les perms, ce que MS dit qu'il ne fait pas. Ai-je trouvé une erreur dans la documentation MS depuis 2000 lol ??
Regardez maintenant le même scénario lorsque vous utilisez des autorisations explicites. Si vous définissez des autorisations explicites sur un fichier de ce dossier (héritage désactivé), ce qui, par exemple, refuse aux utilisateurs l'accès en lecture, il crée désormais UNE NOUVELLE entrée ACL spécifiquement pour ce fichier. Désormais, lorsque vous déplacez le fichier vers un nouvel emplacement, il a une entrée ACL directement associée. Dans ce cas, le déplacement d'un fichier vers un nouvel emplacement dans le même volume conserve ses autorisations (comme le prétend MS)!