Мониторинг доступа к файлам 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 и выше. Это представляет собой довольно полное руководство.

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

  • Можно ли узнать, какая программа или сценарий создал данный файл?
  • Могу ли я безопасно читать файл, который добавляется другим процессом?
  • Что означает изменение файла / каталога?
  • В чем разница между этими двумя наборами команд для настройки разрешений ACL?
  • идентифицировать недостающие файлы в папке
  • Создайте файл с использованием специальных символов как имя файла
  • как объединить разные файлы, имеющие один и тот же заголовок, но немного другое имя файла?
  • Сравнить строки и обновить два разных файла
  • Как записывать историю операций файловой системы?
  • Использование O_DIRECT в Linux
  • Удалите все файлы в каталогах, кроме тех, чей путь указан в файле
  • Linux и Unix - лучшая ОС в мире.