2

В Linux возможно ли написать сценарий, который будет подсчитывать количество обращений к файлу в локальной файловой системе и кем?

Как я мог бы отслеживать такие вещи и создавать журнал, если это возможно?

2 ответа2

3

Система аудита - это специальный демон, который отслеживает ресурсы файловой системы и записывает записи журнала в /var/log/audit.log о том, когда конкретный пользователь получил доступ к файлу.

Демон audd должен быть запущен и считывает его конфигурацию из /etc/auditd.conf

Вы можете указать свои собственные правила с помощью auditctl , например,

$ sudo auditctl -w /etc/passwd -p war -k passwd-file

где -p war означает (w)rite, (a)ppend & (r)ead -k 'my rule name' представляет фразу, которая будет отображаться в журнале аудита при возникновении -p war

Если вы хотите увидеть, какие пользователи обращались к каким ресурсам файловой системы, которые отслеживали, используйте auditsearch и auditreport чтобы отфильтровать в журналах записи «Имя моего правила» и сводный отчет соответственно.

1

Конечно, можно узнать, когда в последний раз к файлу обращались, из его атрибута «atime», и есть несколько способов сделать это. Чтобы определить, какой пользователь сделал это более сложно и зависит от контекста, например, был ли доступ к нему через оболочку? доступ к нему через приложение с графическим интерфейсом?

Чтобы увидеть время файла, используйте ls с опцией -u:

$ ls -lu some_file

Например, чтобы найти все файлы в каталоге /home, к которым был получен доступ за последний час, вы можете использовать команду find

$ sudo find /home/ -amin -60

Вы также можете получить более подробную информацию о файле с помощью команды stat :

$ stat some_file

Фактически, здесь есть ссылка на скрипт, который проверяет atime (используя stat) для файлов в указанном каталоге.

Перечитывая ваш вопрос, я понимаю, что вы заинтересованы в том, «сколько раз» файл был доступен. Специальной команды * nix для определения этой информации не существует, поэтому вам придется изучить доступ к файлу регистрации с помощью одного из методов, упомянутых ниже.

Что касается вашего вопроса о том, какие пользователи обращались к файлу, * nix специально не регистрирует это. Предполагается, что sysadmins будет контролировать доступ к файлам и каталогам через разрешения. Однако есть несколько вариантов, которые вы можете попробовать:

  1. используйте ps и fuser чтобы увидеть, какие пользователи в настоящее время обращаются к файлам
  2. вынудить пользователей использовать sudo для доступа к файлам - sudo регистрирует файл /var/log/auth.log - хотя эта опция может быть серьезным убийцей производительности (и доверия)
  3. загляните в списки управления доступом SElinux и ведение журнала
  4. изменить (с псевдонимами) общесистемный профиль оболочки (/etc /profile) для регистрации времени и информации о пользователе в выделенном файле журнала
  5. как предложено в комментарии к вашему вопросу, напишите сценарий оболочки для регистрации времени и информации о пользователе и используйте этот сценарий для обертывания приложений с графическим интерфейсом (т. е. измените запись 'command' в панели запуска

Обратите внимание, что для того, чтобы atime записывался на диск каждый раз, когда пользователь или процесс обращается к нему, необходимо включить параметр atime включенный в запись /etc/fstab этой файловой системы (обсуждается здесь)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .