Мониторинг доступа к файлам Linux

Есть ли какой-либо способ в unix узнать, кто обратился к определенному файлу за последнюю неделю? Это может быть пользователь или какой-то скрипт ftp в каком-то другом месте. Могу ли я получить список имен пользователей, которые обратились к определенному файлу? Как я могу узнать, кто обращается к конкретному файлу?

5 Solutions collect form web for “Мониторинг доступа к файлам Linux”

Если у вас нет чрезвычайно необычных политик ведения журнала, которые обратились к тому, какой файл не зарегистрирован (это будет огромный объем информации). Вы можете узнать, кто вошел в систему в какое время в системных журналах; last команда дает вам историю входа, а другие журналы, такие как /var/log/auth.log , расскажут вам, как пользователи аутентифицировались и откуда они вошли (какой терминал или какой хост, если удаленно).

Дата последнего чтения файла называется временем доступа или коротко . Все файловые системы unix могут хранить его, но многие системы не записывают его, поскольку он имеет (как правило, небольшое) ограничение производительности. ls -ltu /path/to/file или stat /path/to/file показывает время доступа файла.

Если пользователь обратился к файлу и не пытался скрыть свои следы, его история оболочки (например, ~/.bash_history ) может иметь ключи.

Чтобы узнать, кто или кто имеет файл, открывайте его сейчас, используйте lsof /path/to/file .

Чтобы регистрировать, что происходит с файлом в будущем, существует несколько способов:

  • Используйте inotifywait . inotifywait -e /path/to будет печатать /path/to/ ACCESS file line /path/to/ ACCESS file когда кто-то читает file . Этот интерфейс не укажет вам, кто обратился к файлу; вы можете вызвать lsof /path/to/file как только появится эта строка, но есть условие гонки (доступ может быть завершен временем lsof).

  • LoggedFS – это стекируемая файловая система, которая предоставляет представление о дереве файловой системы и может выполнять более удобное протоколирование всех доступов через это представление. Чтобы настроить его, см. Синтаксис файла конфигурации LoggedFS .

  • Вы можете использовать подсистему аудита Linux для регистрации большого количества вещей, включая доступ к файловой системе. Убедитесь, что демон auditd запущен, а затем настройте то, что вы хотите зарегистрировать с помощью auditctl . Каждая зарегистрированная операция записывается в /var/log/audit/audit.log (в типичных дистрибутивах). Чтобы начать просмотр определенного файла:

     auditctl -w /path/to/file 

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

Предыдущий ответ – не самая лучшая практика для того, чтобы делать то, что вы просите. У Linux есть API для этого. API-интерфейс inotify http://linux.die.net/man/7/inotify

  1. Вы можете написать программу на C, чтобы сделать то, что вы хотите, просто вызвать API-интерфейс inotify
  2. Вы можете использовать kfsmd, http://www.linux.com/archive/feature/124903, демона, который использует inotify
  3. Если вы хотите что-то, что работает на разных платформах ( inotify – это конкретный Linux), и вы используете Java, JNotify работает на разных платформах (Linux, Mac, Windows), абстрагируя базовый API собственной ОС.

Вышеприведенный пример с inotifywait должен быть одним из (см. Справочную страницу для получения дополнительной информации):

 inotifywait /path/to/file inotifywait -e open /pat/to/file 

Или с режимом мониторинга и временной меткой:

 inotifywait -m --format '%w:%e:%T' --timefmt '%F %T %Z %z' 

Это, в общем, невозможно. Я видел файловые системы с достаточным аудитом, чтобы сделать это возможным так или иначе, но это не общая вещь Unix, нет.

Позвольте мне Google, что для вас … Да, вы можете! В этой статье показано, как использовать auditctl, ausearch и aureport для ядер Linux 2.6 и выше. Это представляет собой довольно полное руководство.

Я уверен, что есть накладные расходы и пространство, чтобы рассмотреть, но для чего-либо, что требует соблюдения нормативных требований или высокой безопасности, это всего лишь стоимость ведения бизнеса.

  • Создайте файл с использованием специальных символов как имя файла
  • Задание аргумента команды `~ / bin / *` имена файлов из любого каталога в bash
  • как каталоги реализуются в файловой системе UNIX?
  • Магический файл, перенаправляющий на стандартный вывод
  • Что означает ^ @ ^ @ ^ @ в текстовом файле?
  • Как проверить, читается ли группа файлов?
  • Как сократить текущий путь к каталогу, указанный на терминале?
  • Может ли cp переопределять подкаталоги с тем же именем?
  • Как найти файлы с несколькими пустыми строками?
  • Удалено / tmp случайно
  • Есть ли способ сказать системе сохранить папку в памяти?
  • Linux и Unix - лучшая ОС в мире.