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

Вы, кажется, перепутали Tс t. Изman ps:

               T    stopped by job control signal
               t    stopped by debugger during the tracing

В любом случае, чтобы перевести процесс в состояние T(, остановите ), kill -STOPего PID или нажмите Ctrl+Z во время его работы в терминале. Чтобы перевести процесс в состояниеt(трассируемого ), присоединитесь к нему с помощью ptrace, но не позволяйте ему продолжаться, как это делает strace. Один из способов сделать это — запустить gdb, затем attachдля его PID.

0
11.10.2021, 19:51
1 ответ

The idea is to keep a record which app created foo, when, why, where, when it was moved from where to where,when it was copied from where to where, how many copies it haves, where are they, what files were deleted from it's directory, etc.

  • «какое приложение создало foo» :традиционно Unix -подобные системы отслеживают только то, пользователю принадлежит файл (, который изначально совпадает с пользователем, создавшим его, но Действия системного администратора могут изменить это ), и в этом смысле приложения рассматриваются как продолжение воли пользователя.

  • «когда [создано]» :для этого вам нужна файловая система с поддержкой времени создания, известная как crtime, если она поддерживается конкретной файловой системой Linux. Не все файловые системы, подобные Unix -, имеют :три классические метки времени: ctime= время последнего изменения метаданных файла, mtime= время последней модификации содержимого файла и atime= время последнего изменения содержимого файла. последний раз, когда к файлу обращались. В отличие от этих трех, crtimeимеет очень ограниченную поддержку в пользовательских -космических инструментах.

  • "почему [создал]" :О, ты тоже хочешь немного телеологии? Это сложно. По сути, вам нужно будет иметь поле метаданных, связанное с файлом, и все приложения должны будут заполнять его значимой информацией при создании файлов. Операционная система не может просто знать, почему приложение хочет создать конкретный файл, если ему об этом как-то не сказали, и приложение не может знать , почему пользователю нужно создать файл, если оно не спросит пользователя. Но я предполагаю, что вам может понадобиться это только как своего рода широкая категория, такая как «временный файл», «файл конфигурации приложения», «файл пользовательского документа» и т. д. Даже в этом случае вам может потребоваться обновить всю операционную систему и все приложения. чтобы полностью реализовать это.

  • "где" :хорошо, знание того, где находятся файлы, является фундаментальным свойством файловой системы. Но, похоже, вам нужен какой-то журнал аудита.

  • "когда он был перемещен откуда-то куда" :обратите внимание, что перемещение может быть идентифицировано как таковое только в пределах одной файловой системы . Перемещения между файловыми системами - это, по сути, операции копирования + удаления, которые, как вы обнаружили, по сути, «читают из файла A; записывают в файл B; удаляют файл A» с точки зрения операционной системы. И если вы не доверяете приложению, делающему это, и знаете, что его целью является исключительно копирование/перемещение вещей, возможно, что приложение может каким-то образом изменить данные между операциями чтения и записи, при этом ОС не будет знать об изменении.

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

Если вы серьезно относитесь к этому, вы можете сначала взглянуть на SELinux и/или другие системы обязательного контроля доступа, а также на Bell -модель LaPadula . Они предназначены для отслеживания состояния безопасности файлов, а не их происхождения и телеологии, но вы можете получить от них некоторые идеи о том, как такое отслеживание может быть реализовано.

0
12.10.2021, 15:12

Теги

Похожие вопросы