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

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

  • Сравнить строки и обновить два разных файла
  • Как изменить дату изменения файла?
  • ls -l vs ls -lL
  • Если файл переписан с тем же контентом, изменится ли время изменения?
  • Удалите файл с знаками фунта вокруг него
  • Удалить все файлы без ключевого слова в имени файла
  • Ошибка при вызове mv с подстановочными знаками
  • Почему mtime и ctime изменяются для каталога при изменении файла?
  • 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 и выше. Это представляет собой довольно полное руководство.

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

    Linux и Unix - лучшая ОС в мире.