Скрипт для підрахунку кількості звернень до файлу


2

У Linux можна записати скрипт, який може підраховувати кількість звернень до файлу в локальній файловій системі і кому?

Як я можу контролювати таку річ і створювати журнал, якщо це можливо?


3
Сценарій оболонки не може виконати цей моніторинг. E.G. відкриття файлу за допомогою графічного інтерфейсу не буде виявлено за допомогою сценарію оболонки. У файловій системі (або функції зворотного виклику) потрібно було б підключатися щоразу, коли файл відкривається. Це можливо, якщо ви зламаєте ядро, але все це повинно зберегти безпеку / цілісність ядра.
sawdust

Відповіді:


3

The аудит Система - це виділений демон, який контролює ресурси файлової системи і записує записи журналу /var/log/audit.log того, коли певний користувач звернувся до файлу.

The auditd потрібно запустити демон і читає його конфігурацію з /etc/auditd.conf

Ви можете вказати власні правила за допомогою auditctl, напр.

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

де -p війна означає (записувати, (додавати і; (читати -k "назва мого правила" являє собою фразу, яка відображатиметься в журналі аудиту -p війна відбувається

Якщо ви хочете побачити, до яких користувачів зверталися ресурси моніторингу файлової системи, використовуйте 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 спеціально не записує це. Передбачається, що системні адміністратори контролюватимуть доступ до файлів і каталогів за допомогою дозволів. Однак існує кілька варіантів, які можна спробувати:

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

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


Привіт venzen, спасибі за відповідь, Ну насправді я працюю на сервері, який не має X-сервер так GUI не буде проблемою, але спасибі за голови вгору :) Вибачте за не згадуючи його раніше. Ну, я також думав про atime але не вдалося зв'язати це добре. Ну я натрапив на інструмент під назвою аудит auditd це демон, який буде працювати, з auditctl Ви можете контролювати певні файли і ausearch відображатиме дані про те, хто має доступ до файлу, і показує ще багато інформації. Я можу написати сценарій, який фільтрує дані з інформації ausearch. Будь-які перегляди?
Gaara

великий. спасибі за пояснення вашого рішення - я не знав, що аудит може це зробити. тепер ми обидва знаємо. Заради інших (майбутніх) користувачів, які знайдуть це питання, я додаду ще одну відповідь (оскільки ви не можете), яка окреслює аудит як рішення. люб'язно прийняти мою відповідь в дусі ubuntu - це буде ваш різдвяний подарунок мені: D
venzen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.