LINUX.ORG.RU

Whatmade — демон для отслеживания изменений в директориях

 , , , ,

Whatmade — демон для отслеживания изменений в директориях

0

1

Что такое Whatmade?

Whatmade – демон, запоминающий, каким процессом был создан тот или иной файл в отслеживаемых директориях. Такое решение поможет в дальнейшем определить происхождение файлов со странными названиями.

Whatmade написан на языке C++ с использованием Linux fanotify API, распространяется под лицензией GNU GPL v3.

Особенности

В настоящее время демон не определяет события создания файлов. Вместо этого он логирует процессы, которые обращаются к файлам, что иногда может привести к ложным срабатываниям.

Хотя это не делает демон бесполезным, это означает, что предоставляемую им информацию следует интерпретировать с осторожностью – при просмотре результатов по-прежнему рекомендуется критически относиться к ним.

Этот демон хранит данные процесса в расширенных файловых атрибутах.

Пользователям среды рабочего стола MATE предоставляется расширение для файлового менеджера Caja, выводящее информацию о процессе, создавшем выбранный файл, как это показано на скриншоте.

>>> Подробности на GitHub



Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 4)

хранит данные процесса в расширенных файловых атрибутах

Автор уже переделал? В sqlite же было.
Не знаю, кто на такое согласится.

dataman ★★★★★
()
Ответ на: комментарий от PunkPerson

Я помню, что когда-то «Антивирус Касперского» по умолчанию писал свои данные в NTFS-streams.
«Прорывная» технология!
Потом приходилось вычищать файлы Фаром.

dataman ★★★★★
()

Когда-нибудь в России Линукс за пропаганду сатанизма запретят …

One ★★★★★
()
Ответ на: комментарий от Shushundr

Да, использование в позитивном представлении. Но и не только демоны, но и вообще небогоугодное часто )

One ★★★★★
()

Подумалось - звучит как хороший курсач \ простенький диплом с ненулевой полезностью. Буду знать, что студентам посоветовать.

mikhalich ★★
()
Ответ на: комментарий от dataman

Он готов полностью. Я регулярно им пользуюсь и у меня нет нареканий к функциональности. Возможно когда-то соберусь сделать GUI, поскольку даже меня раздражет писать конфиги если мне нужно что-то необычное, но «на один раз».

tempUser
()
Ответ на: комментарий от tempUser

Для ленивых пользователей systemd есть готовый файл .service. Позаботься о ленивых противниках systemd – сделай bash скрипт с демоном.

И сделай расширения для других файловых менеджеров.

PunkPerson
() автор топика
Ответ на: комментарий от PunkPerson

bash

Демон не требует подготовки перед употреблением. Просто запускаешь его и всё.

расширения для других файловых менеджеров.

Э-э-э, не. Мне Каха добавила седых волос, второй раз я в эту реку не полезу. Но если кто-то напишет аддон к миднайту или ещё чему-то, то было бы хорошо.

tempUser
()
Ответ на: комментарий от dataman

Я недавно заметил, что много лет назад пользовался недодефрагментатором shake и он нафигачил расширенных атрибутов на сотню тысяч файлов в хомяке. Это никак и ничему не мешало.

Заметил я это потому, что разбирался с xdg-тегами в КДЕ и велосипедил консольную проставлялку тегов.

legolegs ★★★★★
()
Ответ на: комментарий от tempUser

Он готов полностью.

Всегда можно что-то улучшить. :)
Например, избавиться от ICU-зависимости, добавить поддержку регулярок – хотя бы с помощью SRELL 4.056 -- библиотека ECMAScript-совместимых регулярных выражений.

dataman ★★★★★
()
Ответ на: комментарий от dataman

ICU-зависимости

И что делать с Юникодом? Мне там нужно возиться с ним более плотно чем просто хранить строки.

добавить поддержку регулярок

Если нужно что-то совсем наркоманское, то есть «exec»-правило, позволяющее использовать внешние утилиты. Любые. В том числе и парсеры регулярок.

tempUser
()
Ответ на: комментарий от tempUser

Мне там нужно возиться с ним более плотно чем просто хранить строки.

Увидел только toUTF8String, toLower/toUpper и сравнение строк при сортировке, но может и плохо смотрел.

есть «exec»-правило, позволяющее использовать внешние утилиты

Встроенные-то регэкспы будут быстрее?

Ну да ладно.

dataman ★★★★★
()
std::string attr_name {"whatmade"};
...
std::string correct_attr_name = std::string("user.") + name;

Почему выбрано такое имя для атрибута? Как насчёт user.whatmade сменить на что-то более похожее, на имена от XDG, например user.x-createdby или user.creator (последнее упомянуто в [1] и [2])?

[1] https://wiki.archlinux.org/title/Extended_attributes

[2] https://www.freedesktop.org/wiki/CommonExtendedAttributes/

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от legolegs

Чтобы не пересекаться с другими источниками данных. Демон пишет и читает в своём уголке и никому не мешает. Если бы эти «стандартные» имена хоть в какой-то степени поддерживались бы файловыми менеджерами, то это был совсем другой разговор. Тогда была бы причина вчитаться в эти стандарты и им соотвествовать. А так всё равно и писать и читать и даже выводить приходится самостоятельно.

tempUser
()
Последнее исправление: tempUser (всего исправлений: 1)
Ответ на: комментарий от tempUser

Сделать ICU опциональным, если он выключен - работаь с utf-8 как с ascii. С латиницей работать будет, остатльное в 90% случаев не обязательно, просто они будут работать как case sensitive

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

Зачем?! Кому нафиг нужен этот песец? Это обычная либа. Есть во всех дистрах. Стандартная. Не арч-андеграунд. Линкуйся и не знай печали.

tempUser
()
Последнее исправление: tempUser (всего исправлений: 1)
Ответ на: комментарий от tempUser
$ equery d icu
 * These packages depend on icu:
app-shells/pwsh-bin-7.4.5 (dev-libs/icu)
dev-db/sqlite-3.46.1 (icu ? dev-libs/icu[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
                     (icu ? dev-libs/icu[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
dev-libs/libical-3.0.18 (dev-libs/icu:0/74.1)
                        (dev-libs/icu:0/74.1)
dev-qt/qt5compat-6.8.3 (icu ? dev-libs/icu)
                       (icu ? dev-libs/icu)
dev-qt/qtbase-6.8.3-r1 (icu ? dev-libs/icu)
                       (icu ? dev-libs/icu)
net-fs/samba-4.19.7 (dev-libs/icu[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
                    (dev-libs/icu[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
net-libs/libpsl-0.21.5 (!idn ? dev-libs/icu[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
                       (!idn ? dev-libs/icu[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?])


Как видишь, принудительно требуют icu только самба, поверщель и libical, притом 2 из них в системе не особо нужны, собирались из любопытства. Да и вообще задача переводить юникод в upper/lower - весьма специфичная, этим специализированный софт чаще занимается

mittorn ★★★★★
()
Ответ на: комментарий от tempUser

Если есть вопросы, предложения или возражения – говорите. Отвечу.

Какие меры вы предпринимаете, чтобы ваша поделка осталась после вашей смерти? Создаёте ли сообщество пользователей, отбираете ли последователей-единомышленников, организуете ли обучение, составляете ли документацию, есть ли кандидаты на лидеров-преемников?

Shushundr ★★★★★
()
Ответ на: комментарий от Shushundr

Какие меры вы предпринимаете, чтобы ваша поделка осталась после вашей смерти?

WUT?!

Вот код, вот свободная лицензия. Там проще чем ping. Это nomenus требовал внимания, а тут достаточно лишь прочитать README.

И вообще, я вас тут всех переживу. А кто вдруг слишком молодой, того найду и… переживу.

tempUser
()
Последнее исправление: tempUser (всего исправлений: 1)
Ответ на: комментарий от tempUser

Вот код

Кому нужен ваш код в век, когда все пишут на rust?

Shushundr ★★★★★
()

Уверен там есть exclude-правила, а то мало ли кто то собирает исходники на миллион файлов, и не надо эту папку смотреть. Наверное там даже есть группировка какая то, часто соседние файлы могут быть созданы одной программой

Иногда любопытно знать кто сделал файл. Но очень редко это надо

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

любопытно знать кто сделал файл. Но очень редко это надо

А ещё, кто когда и чем вносил модификации. И какие. git для этого придумали.

Shushundr ★★★★★
()
Ответ на: комментарий от tempUser

Хорошо бы на страничку проекта сравнение с auditd, поскольку с его помощью также можно проследить, кем был создан/модифицирован файл. Как вариант: оверхед на отслеживание (как сильно падает производительность системы в типичных задачах), удобство использования (сколько действий нужно совершить, чтобы получить сведения о судьбе файла), сложность освоения инструмента (просто мышкой потыкать в интуитивный GUI, или выкурить 10 страниц мануала), полнота собираемой информации (что за программа трогала файл, от имени какого пользователя, какой программой она была запущена [ грубо говоря, непосредственно файл трогает программа /bin/echo, а я хочу знать, кто и с какого бодуна этот /bin/echo запускает: то ли это из-под chron делается, то ли ещё из каких-то скриптов рукожопых, непонятно где прописанных ], и тд и тп), зрелость решения (что там с детскими болезнями), совместимость с различными дистрибутивами / версиями ядра / системами виртуализации.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 4)
Ответ на: комментарий от Manhunt

auditd

Это не конкурент. auditd – инструмент для ad hoc аудита. Который ещё и хрен настроишь без курения манов.

Whatmade – готовый к употребелению продукт. Запустил, забыл и радуйся.

оверхед на отслеживание

Это любопытный вопрос на который у меня нет ответа. «Чуйка» подсказывает что на машинах младше 386 оверхед будет ниже точности измерения, но это нужно проверять.

сложность освоения инструмента

Уровень ping

зрелость решения

  1. Это даже не альфа. Это «прилизанный» proof-of-concept. Но на моей машине вроде работает.
tempUser
()
Ответ на: комментарий от tempUser

Милая девочка, успокойся, пожалуйста, прими синюю таблетку и попроси у своих родителей денежек на доктора, который сможет имплантировать тебе чувство юмора...

Somebody ★★★
()

Хотя это не делает демон бесполезным, это означает, что предоставляемую им информацию следует интерпретировать с осторожностью – при просмотре результатов по-прежнему рекомендуется критически относиться к ним.

Так это ж именно и означает, что демон бесполезен.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Нет, не означает.

it does mean that the information it provides should be interpreted with care — critical thinking is still advised

Это скорее означает не очень удачный перевод.

tempUser
()
Ответ на: комментарий от tempUser

Именно и означает. У тебя есть тулза, которая рандомно может показать реальные данные, а может фигню, при этом ты не знаешь когда и что она показывает. А значит ты в любой ситуации должен исходить из предположения, что она показывает фигню.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Любая «тулза» может показать реальные данные, а может фигню. Важна overall процентовка. Тем более что современные системы сложны и фактический результат может быть очень неожиданным для пользователя. Не некорректным, не ошибочным, а именно контринтуитивным. Но так уж устроена реальность. Плюс false positives тоже никто не отменял.

Но вообще ты прав. Да. Если тебе нужны официально заверенные данные с мокрой печатью от Министерства Создания Файлов, то этот демон тебе не поможет.

tempUser
()
Последнее исправление: tempUser (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.