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


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.