Дізнайтеся, який процес записується в певний каталог


19

У мене є каталог / some / dir, і я бачу, що нові файли постійно з’являються там. Як дізнатися, який процес створює ці файли?

Відповіді:


18

Спробуйте lsof +r2 | grep '/some/dir'. Це покаже процеси, які отримують доступ / деякий / dir та оновити кожні 2 секунди.


2
Так, це досить близько до того, що мені потрібно, оскільки воно створює спочатку весь список відкритих файлів, а потім фільтрує за / деякими / dir. Однак якщо процеси створюють файли дуже швидко і не підтримують їх відкритими, я розумію, що вищезгадані можуть навіть пропустити деякі. Я думаю, що в цьому випадку єдиним варіантом є підсистема аудиту, правда?
— homer5439

Ваше припущення правильне. Ще одна ідея - використовувати inotifywait, дивіться linux.die.net/man/1/inotifywait
— weeheavy

дякую, я раніше розглядав інструменти для ініціації, проте виявив, що вони працюють виключно на рівні файлової системи і, здається, не можуть надати інформацію про те, хто що робив.
— homer5439

18

Використовуйте auditпідсистему ядра

auditctl -w /some/dir/ -p war -k whatsgoingon

Це налаштовує гачок, який очікує, що щось станеться під / деяким / dir /.

Тоді переконайтеся, що у вас auditdбіг демон. Після цього просто зачекайте, поки файли з’являться і побачите, з яких /var/log/auditd.logабо де не знаходяться у вашій системі, і прочитайте, що сталося і яким процесом.


Дякую, схоже, це робить саме це, хоча для цього потрібні встановлені інструменти аудиту, які, мабуть, не є скрізь за замовчуванням. Але добре, якщо комусь потрібна ця інформація, її завжди можна встановити.
— homer5439

Як на замітку людям, які бачать це: ви не можете розміщувати годинник у каталогах верхнього рівня (заборонені ядром)
— Tony Sepia

1
Це дійсно ефективний спосіб! Дуже дякую!!! До речі, коли ви закінчите, ви можете зняти всі гачки, щоб уникнути запису журналу аудиту назавжди auditctl -D. Ви можете використати auditctl -lдля переліку всіх гачків.
— Роберт

0

lsof може допомогти:

# lsof -r1 /some/dir/*

1
Спасибі. Чи правильно, що наведена вище команда підказує мені, хто має доступ до існуючих файлів, але нічого не показує для новостворених файлів? Я розумію, що / some / dir / * розширюється до списку файлів, присутніх під час виклику команди.
— homer5439
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.