⏱ Временные метки файлов в Linux: atime, mtime, ctime

Platform Category

Файлы в Linux имеют три основные временные метки:

[!TIP]
Важно понимать, что ctime ≠ создание файла, а отражает изменение метаданных. В Linux нет стандартного поля “creation time” для большинства файловых систем (ext4 поддерживает birth time через stat).


⚡ 1. Просмотр временных меток файлов

Используя stat

stat file.txt

Пример вывода:

  File: file.txt
  Size: 123          Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d   Inode: 123456      Links: 1
Access: 2025-10-02 10:30:15.123456789 +0300  # atime
Modify: 2025-10-01 14:12:00.000000000 +0300  # mtime
Change: 2025-10-01 14:15:30.000000000 +0300  # ctime
 Birth: 2020-01-01 12:00:00.000000000 +0300 # если поддерживается FS

[!TIP] В старых файловых системах (ext3 и ниже) Birth может отсутствовать.


Просмотр только определённой метки

stat -c %x file.txt  # Access time (atime)
stat -c %y file.txt  # Modification time (mtime)
stat -c %z file.txt  # Change time (ctime)

Дополнительно: кто владелец файла

ls -l file.txt

Вывод:

-rw-r--r-- 1 user1 group1 123 Oct  2 10:30 file.txt

Для подробной информации о правах:

getfacl file.txt

🛠 2. Изменение временных меток

Изменить время доступа (atime)

touch -a -d "1988-02-15" file.txt
touch -a -d "1988-02-15 01:00" file.txt
touch -a -d "1988-02-15 01:00:17.547775198 +0300" file.txt

Изменить время модификации (mtime)

touch -m -d "2020-01-20" file.txt

Изменить одновременно atime и mtime

touch -t 202501021230.55 file.txt
# YYYYMMDDhhmm.ss

[!IMPORTANT] ctime нельзя изменить напрямую. Оно обновляется автоматически при изменении прав, владельца или времени модификации.


Изменение владельца и прав

sudo chown user2:group2 file.txt  # сменить владельца
chmod 644 file.txt                # изменить права

🔍 3. Просмотр истории доступа и изменения файлов

Использование auditd

sudo auditctl -w /path/to/file.txt -p rwa -k file_watch
sudo ausearch -f /path/to/file.txt -k file_watch

[!TIP] auditd позволяет вести полноценный журнал изменений файлов и действий пользователей.


Использование inotify (отслеживание в реальном времени)

inotifywait -m file.txt

📄 4. Просмотр временных меток на всех файлах каталога

stat -c "%n %x %y %z" *.txt

💻 5. Временные метки и файловые системы

[!TIP] В Linux ctime не означает «создано», оно отражает изменение метаданных файла.


🧩 6. Полезные команды в связке

Задача Команда
Проверить временные метки stat file.txt
Изменить atime touch -a -d "2025-01-01" file.txt
Изменить mtime touch -m -d "2025-01-01" file.txt
Изменить владельца chown user:group file.txt
Изменить права chmod 644 file.txt
Отслеживать в реальном времени inotifywait -m file.txt
Логировать доступ/изменения auditctl -w file.txt -p rwa -k watch

🔗 Полезные ссылки