ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения

Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения

Давайте посмотрим, каковы различные типы временных меток файлов в Linux, как просмотреть временные метки для файла и как изменить метки времени.

В Linux каждый файл имеет некоторые временные метки, которые предоставляют некоторые важные аналитики о том, когда файл или его атрибуты были модифицированы или  изменены. Давайте посмотрим на эти временные метки в деталях.

Что такое метки времени Linux?

Любой файл в Linux обычно имеет три временных метки:

atime

atime означает время доступа. Эта временная метка сообщает вам, когда был последний раз обращались к файлу. При доступе это означает, что если вы использовали cat, vim, less или какой-либо другой инструмент для чтения или отображения содержимого файла.

mtime

mtime  означает время модификации. Эта временная метка сообщает вам, когда был последний раз модифицирован файл. Это означает, что содержимое файла было изменено путем редактирования файла.

ctime

ctime  означает время изменения статуса. Эта временная метка сообщает вам, когда был последний раз были изменены свойства и метаданные файла. Метаданные включают права доступа, права собственности, имя и местоположение файла.

Как просмотреть временные метки файла?

Вы можете использовать команду stat для просмотра всех временных меток файла. Использование команды stat очень просто. Вам просто нужно указать имя файла.

stat <filename>

 

Результат будет таким:

stat andreyex.txt 
  File: andreyex.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 10305h/66309d	Inode: 11936465    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyex)   Gid: ( 1000/andreyex)
Access: 2018-10-07 23:10:25.134647523 +0530
Modify: 2018-10-07 23:10:25.134647523 +0530
Change: 2018-10-07 23:10:25.134647523 +0530
 Birth: -

Вы можете увидеть все три временных метки (доступ, модифицирование и изменение) в приведенном выше выводе. Все три временных метки здесь одинаковы, потому что мы просто создали этот пустой файл с командой touch.

Теперь давайте изменим эти временные метки.

Если мы используем команду less для чтения файла, это изменит только время доступа, потому что содержимое и метаданные файла остаются неизменными.

$ less andreyex.txt 
$ stat andreyex.txt 
  File: andreyex.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 10305h/66309d	Inode: 11936465    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyex)   Gid: ( 1000/andreyex)
Access: 2018-10-07 23:15:12.847568584 +0530
Modify: 2018-10-07 23:10:25.134647523 +0530
Change: 2018-10-07 23:10:25.134647523 +0530
 Birth: -

 

Теперь давайте изменим время модификации. Мы будем использовать команду cat для добавления нового текста в этот файл. Это предотвратит изменение времени доступа.

$ cat >> andreyex.txt 
demo text
^C
$ stat andreyex.txt 
  File: andreyex.txt
  Size: 10        	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11936465    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyex)   Gid: ( 1000/andreyex)
Access: 2018-10-07 23:15:12.847568584 +0530
Modify: 2018-10-07 12:32:34.751320967 +0530
Change: 2018-10-07 12:32:34.751320967 +0530
 Birth: -

Вы заметили что-то странное? Вы изменили файл и ожидали изменения mtime, но также изменили время ctime.

Запомните, ctime всегда изменяет mtime, это потому, что пока время изменения находится под контролем пользователя, ctime контролируется системой. Он представляет собой, когда в последний раз были изменены блоки данных или метаданные файла. Если вы изменяете файл, блоки данных изменяются и, следовательно, ctime изменяется.

Вы можете изменить ctime только путем изменения прав доступа к файлам, используя CHMOD или же командой chgrp, но вы не можете модифицировать mtime без изменения ctime.

Вы также не можете изменять ctime в прошлом обычными способами. Это своего рода функция безопасности, потому что она сообщает вам в последний раз, когда файл был изменен. Даже если кто-то изменяет mtime и устанавливает его в прошлом для злонамеренных целей, ctime укажет фактическое время, когда mtime было изменено.

Каково использование временных меток файлов?

Это помогает при анализе. Там может быть несколько ситуаций, когда вам нужно ссылаться на отметки времени файла. Например, вы можете увидеть, был ли файл изменен в последнее время или нет, когда он должен был быть изменен.

Одним из наших любимых способов было найти файлы журналов приложения с помощью mtime. Запустите приложение и просто зайдите в родительский каталог приложения и выполните поиск файлов, которые были изменены за последние несколько минут.

Мы уже показали вам выше, что он также может помочь в анализе того, кто обратился к файлам или модифицировал их злонамеренно. Временные метки играют важную роль в таких ситуациях.

Как узнать, когда был изначально создан файл?

Вы заметили последнюю строку вывода команды stat? В нем указывается «Birth». Вы можете догадаться, что это представляет собой timestmap, когда файл был «рожден» (или был создан, чтобы быть более точным).

Собственно, там является еще одна временная метка называется временем создания (cr). Не все файловые системы поддерживают эту метку времени. Ext4 – одна из популярных файловых систем Linux, и хотя она поддерживает временную метку создания, команда stat в настоящее время не может ее показать. Возможно, будущие версии команды stat покажут временную метку создания в разделе «Birth».

Exit mobile version