Как узнать, когда файлы были использованы в Linux
Кратко: используя stat, ls и find, вы быстро определите, когда файл был прочитан, изменён или когда изменились права/владелец. В статье есть готовая шпаргалка команд, метод расследования, чек-листы для админа и домашнего пользователя, а также план действий при подозрительном доступе.

Описание изображения: иллюстрация терминала Linux с файловой системой и метаданными файлов
Linux предоставляет развитую файловую систему и набор утилит, которые позволяют узнать не только содержимое файлов, но и их историю доступа. Это полезно как для расследования подозрительной активности на сервере, так и для обычного поиска, если вы забыли, когда и кем был открыт или изменён файл.
Зачем это важно
Знание времён доступа и изменений файла помогает в двух основных сценариях:
- Безопасность: понять, был ли файл прочитан или изменён неавторизованно.
- Операционная диагностика: найти, кто и когда работал с конфигурацией или документами.
Опытному администратору это даёт ключи к выяснению «кто», «когда» и «что» произошло. Домашнему пользователю — шанс отследить, куда могли попасть личные файлы.
Важно: времена, которые показывают утилиты файловой системы, зависят от типа файловой системы и настроек (например, atime может быть отключён или изменён параметрами монтирования). Если нужна надёжная регистрация событий — используйте системные аудиты (auditd) в дополнение к этим методам.
Быстрый взгляд на stat
Команда stat показывает подробную информацию о файле: размер, тип, UID/GID, а также три ключевые временные метки.
Пример:
stat /etcВы увидите примерно такие поля: Access (последний чтение — atime), Modify (изменение содержимого — mtime), Change (изменение метаданных: права/владелец — ctime). Пояснение в одну строку:
- atime — обновляется при чтении файла;
- mtime — обновляется при изменении содержимого;
- ctime — обновляется при изменении метаданных файла (включая права или смену владельца).

Описание изображения: вывод команды stat для каталога /etc с указанием Access, Modify и Change
Когда вы не помните имя файла — ls придёт на помощь
Если имя файла забыто, ls поможет просмотреть каталог и понять, какие файлы и когда изменялись.
Основные варианты ls:
ls -a # показать все файлы, включая скрытые
ls -l # длинный формат (права, владелец, размер, дата)
ls --time-style=FORMAT # кастомный формат даты/времениПример формата даты (в точности зависит от версии coreutils):
ls --time-style=+%D # отображает дату в формате MM/DD/YYКомбинации:
ls -al --time-style=+%D # показать все файлы в длинном формате с пользовательской датой
ls -alS --time-style=+%D # то же, отсортировано по размеру (большие — вверху)
Описание изображения: пример вывода ls с правами, владельцем, размером и датой файлов в домашней директории
Совет: если в каталоге тысячи файлов, лучше фильтровать по шаблону или использовать find (см. ниже), чтобы не теряться в списке.
Параметр времени в ls
Для просмотра конкретного типа времени используйте опцию –time:
ls -l --time=atime # покажет время последнего чтения
ls -l --time=mtime # покажет время последней модификации содержимого
ls -l --time=ctime # покажет время последнего изменения метаданныхКоротко:
- atime — чтение;
- mtime — изменение содержимого;
- ctime — изменение прав/владельца или перемещение в файловой системе.
Найти нужные файлы с помощью find
Команда find гораздо гибче для поиска по времени, типу и прочим атрибутам.
Пример: показать файлы в /etc, отсортированные по времени модификации в обратном порядке (свежие сверху):
find /etc -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -rРазбор формата printf:
- %TY-%Tm-%Td — год-месяц-день;
- %TT — полное время с секундами;
- %p — путь к файлу;
- ‘\n’ — перевод строки.
Команда удобна для быстрой оценки «что изменилось недавно» в каталоге и его подпапках.

Описание изображения: вывод команды find с датой и временем для каждого найденного файла
Альтернативные подходы и дополнения
- auditd: системный демон аудита (включая ausearch/ausearch), фиксирует события на уровне ядра и даёт более надёжную историю доступа.
- inotify / inotifywait: подходит для реального времени (мониторинг доступа/изменений) на запущенной системе.
- версии файловых систем и точки монтирования: на некоторых системах atime отключён из соображений производительности (relatime, noatime).
Когда эти методы не подходят: если диск был отмонтирован и смонтирован на другой машине с правками времени, локальные метаданные могут быть изменены — в таких случаях потребуется сырой анализ диска и forensic-инструменты.
Мини-методология расследования файлового инцидента
- Скопируйте и зафиксируйте образ (если инцидент критичен).
- Выполните stat и ls для подозрительных файлов и каталога.
- Используйте find для поиска недавно изменённых/прочитанных файлов.
- Проверьте системные логи и auditd (если включён).
- Сопоставьте временные метки с логами процессов и пользователей.
- При подтверждении — выполните план реагирования (см. ниже).
Важно: по возможности работайте с копией данных, чтобы не повредить следы.
Чек-листы по ролям
Администратор сервера:
- Проверить stat для конфигурационных файлов (/etc, /var/www и т.д.).
- Проанализировать find по временным окнам (последние 24 часа, 7 дней).
- Проверить auditd/rsyslog и сопоставить PID/пользователей.
- При необходимости — заблокировать доступ и зафиксировать образ диска.
Домашний пользователь:
- Выполнить ls -al в папках с документами/фото.
- Найти большие и недавно изменённые файлы (ls -alS).
- Поиск по маске имени (find ~/ -type f -name “*.jpg” -printf …).
План действий при подозрительном доступе
- Изоляция: ограничьте сетевой доступ к серверу при серьёзных подозрениях.
- Сбор данных: снимите вывод stat/ls/find, скопируйте логи (/var/log) и, если нужно, сделайте образ диска.
- Анализ: сверка временных меток с логами служб и учётными записями.
- Восстановление: откат из резервной копии или откат прав/владельца.
- Уроки: включите auditd или настройте более строгие политики доступа.
Шпаргалка команд (cheat sheet)
stat <путь> # подробные метаданные файла
ls -al --time-style=+%D # список с пользовательской датой
ls -l --time=atime # показать время последнего чтения
find /path -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
auditctl -w /etc/passwd -p rwa -k passwd_watch # аудит изменений
ausearch -k passwd_watch # поиск по ключу аудита
inotifywait -m /path # мониторинг событий в реальном времениКритерии приёмки
- Вы можете показать время последнего чтения, изменения и изменения метаданных для файла с помощью stat.
- Вы можете найти файлы, изменённые за указанный период, с помощью find и отфильтровать их по времени.
- В случае подозрительного доступа у вас есть план сбора данных и первичных мер реагирования.
Короткий словарь терминов
- atime — время последнего чтения;
- mtime — время последней модификации содержимого;
- ctime — время последнего изменения метаданных;
- auditd — демон аудита для системного логирования событий.
Когда это даёт неверные результаты
- Если файловая система смонтирована с опцией noatime, время доступа не обновляется.
- Если метки времени были намеренно изменены (touch, пересоздание файлов), на уровне metadata это может ввести в заблуждение.
- При работе с резервными копиями и переносами между машинами временные метки могут отличаться.
Заключение
Стандартные утилиты Linux — stat, ls и find — дают быстрый и прозрачный способ выяснить, кто и когда обращался к файлам. Для серьёзных расследований их стоит дополнять системным аудитом (auditd) и инструментами мониторинга в реальном времени (inotify). Следуя чек-листам и плану действий, вы сможете систематично собирать данные и корректно реагировать на подозрительную активность.
Важно: никогда не работайте напрямую на компрометированной системе без копий — работайте с образами и логами.
Спасибо за чтение. Какие инструменты используете вы? Поделитесь в комментариях — это поможет другим выбирать баланс между удобством и контролем.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента