Файлы в Linux имеют 3 типа временных меток: время доступа (англ. access time, сокр. atime
), время модификации (англ. modification time, сокр. mtime
) и время изменения (англ. change time, сокр. ctime
).
Однажды может возникнуть необходимость подделать временные метки какого-либо файла.
atime
(время доступа), как и mtime
(время модификации) могут быть легко изменены с помощью команды touch
, но для подделки метки ctime
(времени изменения) стандартного решения не существует.
Тем не менее, в качестве обходного пути, можно установить системное время в то значение на которое вы хотите изменить ctime
файла, затем использовать команду touch
на этом файле и потом откатить системное время обратно.
Из приведенной ниже статьи вы узнаете, как сохраняя анонимность изменять временные метки файла.
Дельный Совет: Чтобы замести следы — очистите историю последних входов в систему. Читать далее →
Узнать Временные Метки Файла
Чтобы получить информацию о текущий временных метках файла воспользуетесь командой stat
:
$ stat file.txt File: ‘file.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 804h/2052d Inode: 2501536 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2015-02-19 11:43:08.503408793 +0200 Modify: 2015-02-19 11:43:08.503408793 +0200 Change: 2015-02-19 11:43:08.503408793 +0200
Разница Между «atime», «mtime» и «ctime»
Временная метка | Когда она обновляется? |
---|---|
atime | Время доступа к файлу обновляется когда вы открываете файл либо когда он используется для других операций, например таких как: grep, cat, head и т.д. |
mtime | Время модификации файла обновляется когда вы изменяете его содержимое либо сохраняете файл. |
ctime | Время изменения файла обновляется когда меняются его атрибуты, такие как владелец файла, права, либо он перемещается на другую файловую систему. Также это время обновляется и при изменения времени модификации файла. |
Изменить Временя «Доступа» и «Модификации» Файла
Изменить atime
к файлу (время доступа):
$ touch -a --date="1988-02-15" file.txt $ touch -a --date="1988-02-15 01:00" file.txt $ touch -a --date="1988-02-15 01:00:17.547775198 +0300" file.txt
Изменить mtime
файла (время модификации):
$ touch -m --date="2020-01-20" file.txt $ touch -m --date="2020-01-20 23:05" file.txt $ touch -m --date="2020-01-20 23:05:43.443117094 +0400" file.txt
Подделать Время «Изменения» Файла
Как я уже говори ранее, не существует стандартного решения для подделкиctime
(времени изменения файла).
Тем не менее, если вы готовы рискнуть, это можно сделать.
Для начала необходимо изменить системное время на то, на которое вы хотите поменять ctime
.
Затем необходимо использовать команду touch
на файле, а потом откатить системное время обратно.
Неожидаемые последствия: Изменение системного времени может привести к неожидаемым последствиям. Используйте приведенные ниже команды только на свой страх и риск.
Сохраните текущую дату и время в переменную NOW
:
$ NOW=$(date)
Установите поддельное системное время (необходим root):
$ date --set "2030-08-15 21:30:11"
Используйте команду touch на файле для изменения всех временных меток на поддельные:
$ touch file.txt
Откатите время назад (необходим root):
$ date --set "$NOW"
Дельный Совет: Удаляйте историю команд в BASH эффективно! Читать далее →
Для увеличения скорости выполнения модификаций и как следствие уменьшения риска возможных последствий, вы можете выполнит приведенные выше команды следующим образом:
$ NOW=$(date) && date -s "2030-08-15 21:30:11" && touch file.txt && date -s "$NOW"
Заметаем Следы
Чтобы замести следы — очистите значение переменной, а также почистить логи и историю.
Очистите значение переменной NOW
:
$ unset NOW
Из файла /var/log/messages
удалите строки с информацией об изменении системного времени (необходим root):
Feb 24 06:32:46 centos7 systemd: Time has been changed Aug 15 14:30:11 centos7 systemd: Time has been changed
Дельный Совет: Хотите сохранить анонимность? Узнайте как использовать ПРОКСИ из командной строки в Linux! Читать далее →
Очистите историю входов в Linux (необходим root):
$ echo > /var/log/wtmp $ echo > /var/log/btmp $ echo > /var/log/lastlog
Очистите историю текущей сессии:
$ history -r
Надо бы исправить заголовок/описание кода:
Изменить [s]ctime[/s] mtime файла (время модификации):
Поправил. Спасибо.
It’s better to reset the date/time from ntp afterwards, using (for 2018 kernels):
&& timedatectl set-ntp off && timedatectl set-ntp on
Note — doesn’t work if the file is on a share from a NAS or server, unless you run the command on the server (not recommended).
Also note date -s format is sensitive to locale.
Thanks, this is useful
Thanks, useful information.
Is it possible to SAFELY disable the touch command? Sometimes it is handy to disallow it so that if a server is hacked, the creation/modification times can’t be changed using touch. Obviously not as an entire solution, but so that if you see files changed at a glance you’ll know something is up. Obviously there are other ways to change it, but it seems some of the scripts just rely on touch.