Как через incrontab посмотреть кто изменял файл

Обновлено: 05.07.2024

Согласен, про "хранятся" я маху дал. Но все же "неудобно" или "невозможно" ? Все же вещи разные. Я вот сходу не припомню, как вообще штатными средствами просмотреть модификатора ..

NWADMIN32, закладка Facts в свойствах файла.

Андрей Тр. aka RH писал(а): Кстати, а та утилита из какого набора г-на Baird'a - бесплатного или за деньги ? Андрей Тр. aka RH писал(а): Я еще как-то спрашивал, что именно в данном контексте считается модификацией - изменение ( или просто доступ ? ) содержимого файла, или даже изменение его атрибутов или имени ?

меняет модификатора, но оставляет прежним владельца. Довольно часто в сетевом каталоге со всеобщим доступом, видел вордовские файлы (.DOC), у которых владелец не совпадал с модификатором, т.е., word тоже умеет модифицировать файл, а не полностью переписывать.

Андрей Тр. aka RH писал(а): Заодно вопрос - архиватор, этот тот, кто меняет соответствующий атрибут .. и все ?

Нет, сейчас специально проверил - whodidit показывает того же архиватора, что и был, после ручного снятия архивного бита:

J:\TMP\eksta>flag *.txt -a /fo
.
PHONES.TXT [Rw----] [-----------------] .Kyrpotin.C. N/A

Насколько я помню, архиватор устанавливался даже у файла, у которого бит "A" не сбрасывался, именно после того, как его забэкапил наш arcserver. Проверить точно смогу теперь только во вторник утром, т.к. в ночь с пятницы на субботу у нас прошёл полный бэкап со сбросом архивных битов, а первый инкрементный бэкап (который не трогает A-бит) состоится в ночь с понедельника на вторник.

Юрий aka qwerty » 23 ноя 2002, 16:10

Т.е. как я понял не затрачивая денежных средств я не могу узнать кто последним правил файл?
Бля. (слов нет) предстовляте ктото отправил от общего адреса
почтового партнерам в финляндии письмо с текстом "ХУЙ СОСИ!"-извините
есть (временно) коммутируемый доступ, почт. клиенты The Bat и общий почтовый ящик локальный на сетевом диске.
А кто виноват ? конечно информационный отдел блин.
И особеннно его руководитель , крик просто безудержный стоит.
Вот теперь и выкручиваешся блин.

Андрей Тр. aka RH » 23 ноя 2002, 17:20

Юрий, как я понимаю вместо всех наших тутошних словоизлияний ответом на вопрос являются слова Сергея о модификаторе файла :

Разумеется, речь про файлы на томе Netware.

Да, неудобно как-то у вас получилось .. но ИМХО с таким же успехом можно винить отдел кадров - что в фирме работают подобные уроды, службу безопасности - что не могут их выявить. А ИТ, теоретически, можно собрать имеющуюся информацию в кучку и посмотреть, что с ней можно сделать. Время отправки письма там, хедер у него просмотреть .. если по горячим следам, то можно также глянуть last login time у народа. Не зная подробностей вашей сети и ситуации трудно что-то конкретное советовать.

У меня есть сценарий, в котором я загружаю файлы .csv в определенную папку, / tmp / data_upload, каждый день, и старые файлы заменяются новыми.

Мне нужно запустить скрипт Python после загрузки данных. Для этого у меня есть идея создать задание cron и отслеживать изменения в файле. Я пытался использовать inotify, но я не очень в области Unix. Как я могу это сделать?

Мне нужно выполнить скрипт test.py, как только в папке загрузки появится изменение даты файла, например, / tmp / data_upload.

Вам может понадобиться incrond (inotify cron daemon), который будет отслеживать изменения в файлах и затем выполнять сценарии.

Incrond может отслеживать добавление нового файла, изменение, удаление и многое другое. В этой статье показано, что событие incrond может отслеживать на некотором примере.

Пример для вашего случая, вы можете создать файл /etc/incron.d/data_upload с содержимым

Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки. Спасибо за напоминание, я добавил контекст для ссылки. Спасибо за ответ, просто чтобы проверить шаги после установки incrontab, выполните shoudl incrontab -e от имени пользователя root и включите эту строку /tmp/data_upload IN_CREATE,IN_MODIFY test.py ? так, чтобы проверить, как только я загружаю новый файл, он должен выполнить файл test.py? где я должен разместить файл test.py? я должен предоставить абсолютный путь для этого? Я думаю, будет лучше поставить абсолютный путь для вашего сценария. Вы также можете проверить cron или системный журнал, если скрипт кажется не работает Можете ли вы также документировать, к какому файлу вы обращаетесь с помощью блока кода, люди, не знакомые с синтаксисом Incrond (как я), могут подумать, что они ссылаются на команду, которую вы должны выполнить в командной строке

Вы можете использовать entr для автоматического запуска скрипта каждый раз, когда файл изменяется, запускаясь ls /tmp/data_upload | entr -p script.py один раз при запуске.

Я люблю использовать программное обеспечение, написанное на ржавчине, потому что вы знаете, что оно не было заброшено в 2004 году или что-то в этом роде. Это почти должно быть новым.

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

найдет любые .csv файлы /tmp/upload_data , которые были изменены менее одного дня назад, и запустит ваш, test.py если найдет какие-либо. Конечно, если ваш test.py файл находится в каком-то другом каталоге, вы хотите соответствующим образом обновить свой путь к нему.

Если вы выполняете свою cron работу чаще, чем раз в день, вы можете использовать mmin опцию, find чтобы указать максимальное время с момента изменения в минутах. Например,

будет искать .csv файлы, которые были изменены менее 60 минут назад - полезно, если cron запускает задание ежечасно.

Два справедливых предупреждения в порядке: во-первых, это не поймает .csv файлы, которые вы полностью удалили. Вы можете проверить это отдельно. Во-вторых, у меня не было времени проверить это. Ожидайте опечаток в моем коде, которые вам придется отлаживать самостоятельно.

Привет, Вы узнаете про incron, Разберем основные ее виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое incron, планирование операций обработки событий в файловой системе , настоятельно рекомендую прочитать все из категории Операционная система LINUX

Incron: Планирование операций обработки событий в файловой системе

Введение

Большинству пользователей Linux хорошо знакома удобная утилита cron, предназначенная для планирования и выполнения разнообразных операций в заданное время. Но что, если действие должно быть выполнено не при наступлении определенного момента времени, а при возникновении некоторого события в файловой системе (например, создания или удаления файла, изменения содержимого каталога и т.д.)? В этом случае может оказаться полезным пакет программincron.

Знакомство с incron

Пакет incron основан на inotify - подсистеме Linux-ядра, которая занимается отслеживанием изменений в файловой системе и сообщает о них заинтересованным приложениям. Название программы произошло от сокращения и объединения названий двух данных подсистем: "INotifyCRON".

Сам по себе пакет incron не очень большой, так, в его состав входят:

  • программа-демон (incrond);
  • программа, обеспечивающая редактирование таблицы событий (incrontab);
  • конфигурационный файл (incron.conf);
  • соответствующие страницы справочника man.

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

Использование incron

Поскольку incron является в некоторой степени "родственником" cron, то и принципы использования этих программ и их пользовательский интерфейс также схожи между собой. Каждый пользователь, обладающий правами для работы с incron, обращается к программе incrontab для просмотра или редактирования списка своих правил (задач). Программа-демон (incrond) обрабатывает эти правила, и при наступлении события, указанного в одном из правил, выполняет соответствующую команду.

Для просмотра текущей таблицы правил используется команда incrontab -l, а для редактирования правил - команда incrontab -e. Редактирование выполняется с помощью текстового редактора, определенного в системной переменной EDITOR. Если для работы с таблицей incrontab необходимо выбрать другой редактор, не изменяя значения EDITOR, то в конфигурационный файл /etc/incron.confследует вписать следующую строку:

При этом следует помнить о предупреждении автора программы Лукаса Елинека, который не рекомендует использовать редакторы с графическим интерфейсом (gvim, KEdit, gedit и т.п.) из-за возможных проблем при взаимодействии с X-сервером. Более предпочтительны в данном случае такие редакторы, как vim, emacs, nano и т.д.

С помощью команды incrontab -r пользователь может удалить свою текущую таблицу правил, при этом никаких предупреждений и запросов на подтверждение удаления не выводится, поэтому этой командой следует пользоваться с осторожностью. После добавления всех необходимых правил в таблицу, ее можно сохранить в файле с помощью следующей команды:

Однако восстанавливать правила в случае удаления таблицы все равно придется вручную.

Демон incrond незамедлительно реагирует на внесение изменений в правила и сразу перезагружает отредактированную таблицу. Но эти изменения не повлияют на команды, которые уже выполняются в текущий момент. Остановить работу текущего активного демонаincrond можно с помощью следующих команд:

Формат строк правил (задач)

Строки в таблице правил (задач) имеют следующий синтаксис:

  • <путь_к_файлу> - наилучшим вариантом будет указание полного пути к отслеживаемому файлу или каталогу. Если в записи пути встречаются пробелы, то перед каждым символом пробела должен быть указан символ "обратная косая черта " (\).
  • <маска_флагов_событий> - символьная или числовая маска, представляющая комбинацию отслеживаемых событий. При символьной записи маски флаги различных событий отделяются друг от друга запятыми.
  • <команда> - как и при использовании cron, командой может быть имя выполняемого файла (программы) или имя сценария, который следует выполнить при наступлении заданных маской событий.

Элементы строки отделяются друг от друга произвольным количеством пробелов или табуляций.

В маску могут быть включены флаги событий, перечисленных в таблице 1.

Таблица 1. Список событий, отслеживаемых incron.

для отслеживания доступа к файлу (чтения из файла).

для отслеживания изменения содержимого файла (записи в файл).

для отслеживания изменения метаданных файла (прав доступа, меток времени доступа и модификации, расширенных атрибутов и т.д.).

для отслеживания закрытия файла, ранее открытого для записи

для отслеживания закрытия файла, который был открыт без разрешения записи в него.

для отслеживания открытия файла.

для отслеживания перемещения файла из наблюдаемого каталога.

для отслеживания перемещения файла в наблюдаемый каталог.

для отслеживания создания файла/подкаталога в наблюдаемом каталоге.

для отслеживания удаления файла/подкаталога в наблюдаемом каталоге.

для отслеживания удаления самого наблюдаемого каталога.

для отслеживания закрытия файла без учета дополнительных условий.

для отслеживания перемещения файла/каталога.

сразу после наступления события запрещается обработка всех последующих событий этого типа, то есть такое событие обрабатывается только один раз.

определяет комбинацию всех возможных событий.

для отслеживания событий, относящихся только к каталогам.

для отслеживания перемещения самого наблюдаемого каталога.

Получить список всех флагов событий, поддерживаемых в текущей версии incron, можно с помощью следующих команд:

После запуска любой из этих двух команд список флагов, разделенных запятыми, будет направлен на устройство стандартного вывода.

Как указывает автор, сам по себе демон incrond не защищен от проблемы бесконечного зацикливания. То есть, не исключена ситуация, когда некоторое событие инициализировало выполнение соответствующей команды, что опять приводит к наступлению этого же события и т.д. (например, для обработки события типа IN_ATTRIB применяется команда chmod.) Защиту от зацикливания при обработке событий должен взять на себя пользователь, записав в маску специальный флаг IN_NO_LOOP. При этом временно запрещается обработка всех событий для данного правила до тех пор, пока текущее событие не будет полностью обработано. После завершения обработки отслеживание заданных событий будет автоматически возобновлено. Недостатком такого подхода является потеря тех событий, которые были сгенерированы в интервале, когда обработка по данному правилу была запрещена.

В спецификацию команды для удобства могут быть включены следующие шаблоны:

Примеры использования incron

В некоторых системах документы для печати направляются не напрямую на принтер, а в специально организованный каталог заданий на печать, именуемый спулингом. Для отслеживания появления заданий в спулинге в incrontab можно написать простое правило:

Теперь после завершения записи и закрытия файла в спулинге будет инициализирован сценарий, позволяющий выполнить печать заданного файла. Имя файла (с указанием полного пути к нему) передается в сценарий, как аргумент, при помощи ранее рассмотренных шаблонов.

Если суперпользователю root разрешено использовать incron, то можно организовать резервное копирование конфигурационных файлов с историей их изменения (т.е. каждый файл снабжается меткой времени). Для этого "от имени" суперпользователя rootсоздается сценарий incron_bckp.sh (см. листинг 1), который размещается в каталоге /usr/local/sbin.

Листинг 1. Сценарий для резервного копирования измененных конфигурационных файлов

Этот сценарий необходимо сделать выполняемым с помощью следующей команды:

После этого необходимо открыть таблицу правил, как показано ниже:

и добавить в нее следующие строки:

После выполнения указанных действий изменения в системных конфигурационных файлах будут фиксироваться.

Заключение

Сервис incron позволяет без затруднений организовать обработку событий, происходящих в файловой системе, причем отслеживать события можно избирательно, как для единственного файла, так и для целого дерева подкаталогов. Диапазон отслеживаемых событий достаточно широк: учтены практически все возможные варианты событий в файловой системе.

Installing The Package On Lenny / Sid

  • Allow the root user to make use of incron:
    • By editing /etc/incron.allow, adding 'root' to it.
    • By removing the file /etc/incron.allow.

    Я хотел бы услышать твое мнение про incron Надеюсь, что теперь ты понял что такое incron, планирование операций обработки событий в файловой системе и для чего все это нужно, а если не понял, или есть замечания, то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционная система LINUX

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

    Как установить auditd (auditctl)

    В Debian, Linux Mint, Kali Linux, Ubuntu и их производных для установки выполните команду:

    В Arch Linux, Manjaro, BlackArch и их производных данный пакет называется audit и входит в core репозиторий, следовательно, он предустановлен по умолчанию.

    В CentOS для установки выполните команду:

    Как запустить монитор доступа и изменений файла

    Необходимо начать с добавления правил. Следующая команда добавляет монитор доступа и изменения файла /etc/resolv.conf:

    Это пример команды с другой нотацией, но выполняет она идентичное действие — мониторит все изменения и доступ к файлу /etc/resolv.conf:

    Проверить, какие правила добавлены, можно следующей командой:


    Хотя правило добавлено, служба аудита ещё не запущена. Для её запуска выполните команду:

    Если вы хотите добавить данную службу в автозагрузку, то выполните:

    Запуск auditd без перевода в фон

    Предыдущая команда запустит auditd как демон, то есть служба в фоне. Если вам это не нужно и вы хотите запустить auditd на переднем плане, то вместо использования systemctl выполните следующую команду:

    В этом случае все события с отслеживаемыми файлами или папками будут отображаться в стандартном выводе. При этом файл журнала не будет вестись.

    Это полезно при отладке правил, либо если вам нужно проследить за событиями в короткий промежуток времени.

    Как просмотреть журнал auditd

    Журнал auditd хранится в файле /var/log/audit/audit.log. Но вместо того, что просматривать его напрямую, можно воспользоваться утилитой ausearch, например:

    Если будет выведено

    значит данный файл ещё не трогала ни одна программа.

    Если события произошли, там будут примерно следующие записи:


    Чтобы узнать, какая программа выполнила действие, смотрите строку «exe=».

    Как остановить службу auditd

    Чтобы удалить службу из автозагрузки, выполните команду:

    Если вы попытаетесь остановить службу следующей командой:

    Для остановки службы выполните команду:

    Как удалить все правила отслеживания изменений папок и файлов

    Чтобы удалить сразу все правила, выполните команду:

    Возможно удаление отдельных правил (как по отслеживаемому событию, так и по привязанному идентификатору).

    Ошибка «Error opening /var/log/audit/audit.log (Нет такого файла или каталога)»

    Если вы получили ошибку

    То она означает, что служба audit не была запущена (вы забыли её запустить, она не запустилась из-за ошибки, либо вы запустили её на переднем плане).

    Примеры настройки auditd

    Чтобы посмотреть все системные вызовы, сделанные определённой программой:

    Чтобы увидеть файлы, открываемые определённым пользователем:

    Чтобы увидеть неудачные вызовы openat:

    Для слежения за изменениями файла (два способа выражения):

    Для рекурсивного слежения за директорией на предмет изменений (два способа выражения):

    Чтобы посмотреть, получал ли администратор доступ к файлам пользователя:

    Файлы auditd

    Документация по auditd

    В данной статье показано, как начать использовать auditd для отслеживания изменений в файле и отслеживанию доступа к файлу.

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

    С помощью man вы можете ознакомиться со следующей документацией:

    Читайте также: