¿Es posible tener un archivo que tenga una fecha de modificación anterior a la fecha de creación? ¿Qué acciones causarían este evento?
¿Es posible tener un archivo que tenga una fecha de modificación anterior a la fecha de creación? ¿Qué acciones causarían este evento?
Respuestas:
Considere un archivo .tar que se extrae. Por lo general, los archivos extraídos tendrán una última marca de tiempo de modificación asignada desde el contenido del archivo (que generalmente se encuentra en el pasado a menos que sea un viajero en el tiempo). En lo que respecta al sistema de archivos, estos archivos se acaban de crear.
También existen utilidades para cambiar el tiempo de modificación de los archivos existentes, en Linux, por ejemplo, este es el comando táctil .
cp -p
y las cosas que lo imitan como rcp -p
y scp -p
, así como rsync
con -t
o -a
, toman el modtime de la fuente.
Si crea un archivo desde cero, obtiene un tiempo de creación de "ahora" y una fecha de modificación de "ahora". Ahora imagine copiar este archivo en otra unidad. Windows mantendrá el tiempo de modificación, pero el tiempo de creación de ese archivo se establecerá en el momento en que copió el archivo a esa unidad (es decir, la hora en que se creó el archivo en esa unidad). Simple como eso.
En realidad es correcto:
En Windows, es muy fácil configurar (falsificar, si lo desea) los tiempos creados y modificados de un archivo. No tiene que cambiar el reloj de la computadora; Ni siquiera necesita acceso de administrador local. Todo lo que necesita es acceso de escritura al archivo en cuestión.
Para establecer el tiempo de creación de un archivo con PowerShell usando SetCreationTime
:
[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))
Para configurar la hora de la última modificación usando SetLastWriteTime
:
[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))
En Linux, puede cambiar fácilmente la hora de la última modificación de un archivo con el -d
indicador de touch
, como se muestra en esta respuesta a Ask Ubuntu . Realmente no existe una noción de una fecha de creación para los archivos en los sistemas de archivos de Linux ( más información en Unix y Linux ).
Lo más importante a tener en cuenta aquí es que el tiempo de modificación del archivo no es realmente especial: se almacena como cualquier otro dato. No hay manera de saber cuándo se han hecho la última escriben o leen de.
A partir de aquí, podemos ver que siempre es posible (excluyendo medios de escritura única como un CD) ir y modificar directamente los bits en una unidad que almacena la última hora modificada, o incluso la hora de creación.
Más prácticamente, esto también se puede hacer desde sistemas operativos comunes, como han señalado otras respuestas. En Windows, esto es proporcionado por la SetFileTime
función WinAPI , y puede hacerlo con utime
Linux. Herramientas como touch
construir sobre estas API.
El uso legítimo más común para estas API es preservar el tiempo de modificación, por ejemplo, al copiar archivos, extraerlos de archivos, etc.
En mi experiencia, ha sido cuando una o más computadoras se han utilizado para modificar el archivo y una de ellas tiene la hora del sistema incorrecta. Las tres causas más comunes para que el tiempo del sistema sea incorrecto, sin ningún orden en particular, son: