В Linux возможно ли написать сценарий, который будет подсчитывать количество обращений к файлу в локальной файловой системе и кем?
Как я мог бы отслеживать такие вещи и создавать журнал, если это возможно?
В Linux возможно ли написать сценарий, который будет подсчитывать количество обращений к файлу в локальной файловой системе и кем?
Как я мог бы отслеживать такие вещи и создавать журнал, если это возможно?
Система аудита - это специальный демон, который отслеживает ресурсы файловой системы и записывает записи журнала в /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
чтобы отфильтровать в журналах записи «Имя моего правила» и сводный отчет соответственно.
Конечно, можно узнать, когда в последний раз к файлу обращались, из его атрибута «atime», и есть несколько способов сделать это. Чтобы определить, какой пользователь сделал это более сложно и зависит от контекста, например, был ли доступ к нему через оболочку? доступ к нему через приложение с графическим интерфейсом?
Чтобы увидеть время файла, используйте ls
с опцией -u:
$ ls -lu some_file
Например, чтобы найти все файлы в каталоге /home, к которым был получен доступ за последний час, вы можете использовать команду find
$ sudo find /home/ -amin -60
Вы также можете получить более подробную информацию о файле с помощью команды stat
:
$ stat some_file
Фактически, здесь есть ссылка на скрипт, который проверяет atime (используя stat
) для файлов в указанном каталоге.
Перечитывая ваш вопрос, я понимаю, что вы заинтересованы в том, «сколько раз» файл был доступен. Специальной команды * nix для определения этой информации не существует, поэтому вам придется изучить доступ к файлу регистрации с помощью одного из методов, упомянутых ниже.
Что касается вашего вопроса о том, какие пользователи обращались к файлу, * nix специально не регистрирует это. Предполагается, что sysadmins будет контролировать доступ к файлам и каталогам через разрешения. Однако есть несколько вариантов, которые вы можете попробовать:
ps
и fuser
чтобы увидеть, какие пользователи в настоящее время обращаются к файламsudo
для доступа к файлам - sudo регистрирует файл /var/log/auth.log - хотя эта опция может быть серьезным убийцей производительности (и доверия)Обратите внимание, что для того, чтобы atime записывался на диск каждый раз, когда пользователь или процесс обращается к нему, необходимо включить параметр atime
включенный в запись /etc/fstab этой файловой системы (обсуждается здесь)