Timestamps de archivo: atime, ctime y mtime

Y la ¿última? del año es sobre... ¿seguridad?. ¿Cómo cambiarías el timestamp de un archivo?, aunque la pregunta podría ser ¿para qué?, ambas son muy sencillas... o no tanto. A lo primero:
$ touch archivo.txt
$ ls -las
0 -rw-r--r--  1 oscar oscar    0 2008-12-31 06:53 archivo.txt
$ touch -t 200901010000.01 archivo.txt
$ ls -las
0 -rw-r--r--  1 oscar oscar    0 2009-01-01 00:00 archivo.txt
Y las razones pueden ser múltiples, la que primero se me ocurre es meterme en la piel de un intruso que quiere borrar los timestamps de los archivos que ha tocado para que no salte la alarma. De todas formas no hemos ganado todavía, porque hay más formas de saber la fecha real:
$ find ./ -printf "%m; %Ax;%AT; %Tx;%TT; %Cx;%CT; %U;%U;%G;%s;%p\n" | grep prueba.txt
644; 01/01/09;00:00:01; 01/01/09;00:00:01; 31/12/08;06:54:01; 1000;1000;1000;0;./archivo.txt
$ ls -l --time=ctime
-rw-r--r-- 1 oscar oscar 0 2008-12-31 06:54 archivo.txt
$ ls -l --time=atime
-rw-r--r-- 1 oscar oscar 0 2009-01-01 00:00 archivo.txt
$ ls -l --time=access
-rw-r--r-- 1 oscar oscar 0 2009-01-01 00:00 archivo.txt
$ ls -l --time=use
-rw-r--r-- 1 oscar oscar 0 2009-01-01 00:00 archivo.txt
$ ls -l --time=status
-rw-r--r-- 1 oscar oscar 0 2008-12-31 06:54 archivo.txt
Existen tres tipos de marca de tiempo, atime, ctime y mtime. mtime marca la fecha y hora de la última escritura en el fichero, atime la última lectura del fichero y ctime el último cambio del fichero.

El comando ls es capaz de visualizar ctime, atime y marcas de access, use y status.

Según vemos en el ejemplo, tanto el atime como el mtime -respectivamente- se han cambiado de forma correcta con touch, pero no así el ctime. Entonces:
  • touch -t: Corrige tanto atime como mtime.
  • touch -a -t: Corrige solamente el atime.
Existen otro tipo de herramientas como debugfs que son capaces de cambiar el ctime de un archivo, pero son herramientas que requieren privilegios de root y de muy bajo nivel que podrían dañar los datos del sistema de almacenamiento.

En definitiva, existe la posibilidad de que un intruso borre sus huellas timestamp, pero requiere que el sistema esté altamente comprometido.

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.