Un fichier peut-il sembler modifié avant sa création? [dupliquer]

9

Est-il possible d'avoir un fichier dont la date de modification est antérieure à sa date de création? Quelles actions provoqueraient cet événement?

AlexanderRD
la source
7
Créez le fichier. Retourner l'horloge. Modifiez le fichier. Remettez l'horloge.
DavidPostill
@DavidPostill Notez que, au moins sous Windows, la modification de l'heure système nécessite des privilèges administratifs, alors qu'il existe d'autres façons de créer des heures de fichiers amusantes qui ne le font pas.
Ben N

Réponses:

8

Considérez une archive .tar qui est extraite. En règle générale, les fichiers extraits auront un horodatage de dernière modification attribué à partir du contenu de l'archive (qui est généralement dans le passé, sauf si vous êtes un voyageur du temps). En ce qui concerne le système de fichiers, ces fichiers viennent tout juste d'être créés.

Il existe également des utilitaires pour changer l'heure de modification des fichiers existants, sous Linux par exemple c'est la commande tactile .

Lekensteyn
la source
Et pour un seul fichier, cp -pet les choses qui l'imitent comme rcp -pet scp -p, ainsi rsyncqu'avec -tou -a, prend le modtime de la source.
dave_thompson_085
"temps de création" est un terme Windows pas un * nix. * nix a "change time" qui est facile à confondre avec "creation time" mais pas la même chose.
plugwash
ext4 stocke apparemment une "heure de naissance" qui est similaire (mais pas la même que) à "l'heure de création" des fenêtres mais il n'y a pas de bon moyen d'y accéder. unix.stackexchange.com/a/50184/122182
plugwash
8

Si vous créez un fichier à partir de zéro, il obtient une heure de création de "maintenant" et une date de modification de "maintenant". Imaginez maintenant copier ce fichier sur un autre lecteur. Windows conservera l'heure de modification, mais l'heure de création de ce fichier sera définie à l'heure à laquelle vous avez copié le fichier sur ce lecteur (c'est-à-dire l'heure à laquelle le fichier a été créé sur ce lecteur). Aussi simple que cela.

C'est en fait correct:

  • La dernière fois que le contenu du fichier a été modifié est stocké dans l'heure de modification.
  • L'heure à laquelle le fichier a été créé sur ce disque est stockée dans l'heure de création.
Ro-ee
la source
Ce commentaire est le plus logique car il illustre un scénario très probable où une différence de date créée / modifiée se produira.
Shukri Adams
7

Sous Windows, il est très facile de définir (falsifier, si vous voulez) les heures de création et de modification d'un fichier. Vous n'avez pas besoin de changer l'horloge de l'ordinateur; vous n'avez même pas besoin d'un accès administrateur local. Tout ce dont vous avez besoin est un accès en écriture au fichier en question.

Pour définir l'heure de création d'un fichier avec PowerShell à l'aide de SetCreationTime:

[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))

Pour régler l'heure de la dernière modification à l'aide de SetLastWriteTime:

[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))

Sous Linux, vous pouvez facilement changer l'heure de la dernière modification d'un fichier avec le -ddrapeau de touch, comme indiqué dans cette réponse Ask Ubuntu . Il n'y a pas vraiment de notion de date de création pour les fichiers sur les systèmes de fichiers Linux ( lecture supplémentaire sous Unix et Linux ).

Ben N
la source
3

Oui. Sous Windows, apportez une modification au fichier et enregistrez-le. Copiez maintenant le fichier. En regardant les propriétés de la copie, vous verrez qu'elle a une date de modification antérieure.

David
la source
1

La chose la plus importante à noter ici est que le temps de modification du fichier n'est pas vraiment spécial - il est stocké comme toutes les autres données. Il n'y a aucun moyen de dire quand les données ont été en fait la dernière écriture ou lues à partir.

De là, nous pouvons voir qu'il est toujours possible (à l'exclusion des supports à écriture unique comme un CD) d'aller directement modifier les bits sur un lecteur qui stockent la dernière heure modifiée, ou même l'heure de création.

Plus concrètement, cela est également possible à partir de systèmes d'exploitation communs, comme d'autres réponses l'ont noté. Sous Windows, cela est fourni par la SetFileTimefonction WinAPI , et vous pouvez le faire avec utimesous Linux. Des outils comme touchconstruire au-dessus de ces API.

L'utilisation légitime la plus courante de ces API est de conserver le temps de modification, par exemple lors de la copie de fichiers, de leur extraction à partir d'archives, etc.

Bob
la source
0

D'après mon expérience, cela s'est produit lorsqu'un ou plusieurs ordinateurs ont été utilisés pour modifier le fichier et que l'un d'eux a la mauvaise heure système. Les trois causes les plus courantes de l'heure système erronée, sans ordre particulier, sont:

  1. Tous les ordinateurs ne sont pas configurés pour passer automatiquement à l'heure d'été.
  2. Les gens ont «accidentellement» changé l'heure du système sur un ordinateur.
  3. Les gens ont "délibérément" changé l'heure du système sur un ordinateur comme une plaisanterie.
Tai Paul
la source