# touch -a test.file# touch -m test.fileЭто мы поменяли atime и mtime на текущие. А можно любую дату задать явно:
# touch -m -a -t 201003211751 test.file Установили дату atime и mtime — 21 марта 2010 года 17:51. Формат даты в команде - YYMMDDhhmm.
Единственное, что не умеет менять touch — дату создания файла (Birth, crtime). С ней есть объективные сложности. Для изменения даты создания файла, надо изменить дату создания иноды для этого файла. А это можно сделать только залезая в файловую систему напрямую. Поможет нам в этом утилита debugfs.
# debugfs -w -R 'set_inode_field /tmp/test.file crtime 201003211751' /dev/sda2# echo 2 > /proc/sys/vm/drop_cachesВторой командой мы сбросили кэш. Если этого не сделать, то сразу изменение не увидите. Я видел информацию, что эту команду надо выполнять с отмонтированным разделом. Возможно для ext2 или ext3 это так, но в ext4 у меня всё меняется наживую в корневом разделе без отмонтирования. Единственное, иногда несколько раз надо было выполнить команду изменения и сброса кэшей, чтобы увидеть результат. Не знаю, с чем связано.
Кстати, через debugfs и set_inode_field вы можете поменять, как и в touch, все остальные значения atime, ctime, mtime.
Простота изменения меток времени файлов наглядно показывают, насколько это ненадёжный механизм, чтобы на него ориентироваться в вопросах безопасности. Эти значения очень легко меняются. И зловреды на сайтах уже давно научились это делать. Сам сталкивался не раз. Только наличие незаражённых бэкапов позволяет надёжно вычислить изменившиеся файлы.
#linux