LD_PRELOAD или подобный для предупреждения пользователя о модификациях в файл?

/dev/null специальный файл, устройства символа текста. Драйвер для того устройства посимвольного ввода-вывода игнорирует то, что Вы пытаетесь записать в устройство, и записи всегда успешны. Если запись к /dev/null сбои, это означает, что Вам так или иначе удалось удалить надлежащее /dev/null и замените его регулярным файлом. Вы, возможно, случайно удалили /dev/null; затем следующее … >/dev/null воссоздал бы его как регулярный файл.

Выполненный ls -l /dev/null и проверьте, что строка смотрит что-то как

crw-rw-rw- 1 root root 1, 3 Sep 13  2011 /dev/null

Это должно начаться crw-rw-rw-: c для устройства посимвольного ввода-вывода и полномочий, которые позволяют всем читать и писать. Файл должен принадлежать корню, хотя это не очень важно. Эти два числа после владельца и группы определяют устройство (главный и незначительный номер устройства). Выше я показываю значения в соответствии с Linux; различные варианты Unix имеют различные значения. Дата является обычно или датой, когда система была установлена или дата последней перезагрузки и не имеет значения.

Если необходимо воссоздать файл, некоторые системы обеспечивают a MAKEDEV команды, или в ПУТИ корня или в /dev. Выполненный cd /dev; ./MAKEDEV std или что-то вроде этого для воссоздания стандартных основных устройств такой как /dev/null. Или создайте устройство вручную, предоставив числа правильного устройства; на Linux это

mknod -m 666 /dev/null c 1 3

1
23.10.2013, 16:07
4 ответа

Существует несколько способов сделать это:

auditd

используйте следующую команду для включения контроля auditd файла (после того, как проверка auditd услуга работает):

auditctl -a exit,always -F path=/path/to/file

Затем загляните /var/log/audit/audit.log видеть, что продолжается.

Используйте следующее для удаления правила при выполнении:

auditctl -d exit,always -F path=/path/to/file

fanotify

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

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

2
27.01.2020, 23:13
  • 1
    fanotify с ее "находятся на событии" функция, походит на то, что я хочу. Я исследую –  dan3 23.10.2013, 16:46
  • 2
    Говорил слишком скоро. fanotify не замечает, редактируете ли Вы/tmp/the-file, затем mv/tmp/the-file/path/to/the-file. Который является тем, что делают редакторы. github.com/howeyc/fsnotify/issues/15. Я не делаю, если существует какое-либо решение. –  dan3 23.10.2013, 17:26
  • 3
    Это было бы операцией каталога, потому что Вы не изменяете файл, Вы изменяете каталог, в котором находится файл. В fanotify Вы просто использовали бы FAN_ONDIR смотреть каталог вместо этого. –  Patrick 23.10.2013, 20:10

Если на Linux, chattr +i the-file предотвратит любую операцию модификации на файле даже к root (кроме другого chattr).

2
27.01.2020, 23:13
  • 1
    Работы над предотвращением доступа, но сценария, кажется, принимает решение на основе отказа и продолжается. Я все еще не могу сказать, какая часть сценария пытается записать файл. –  dan3 23.10.2013, 17:27

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

На хинду это доступно по умолчанию, но не должно быть слишком трудно установить на других дистрибутивах.

http://git.overlays.gentoo.org/gitweb/?p=proj/sandbox.git;a=summary

Внутренне это реализовано сверх получения по запросу механизма LD_PRELOAD в "libsandbox.so" библиотеке, которая прерывает и фильтрует вызовы файловой системы. Это также идет с аккуратной интерактивной оберткой оболочки, таким образом, единственные потребности ввести "песочницу" для заскакивания в защищенную оболочку.

Функциональность, которую особенно попросил относительно OP (поддельные записи), поддерживается: http://devmanual.gentoo.org/function-reference/sandbox-functions/index.html

1
27.01.2020, 23:13

Если Ваша система поддерживает dtrace (Солярис и производные, FreeBSD, Oracle Linux, Mac OS X), dtrace сценарий может зарегистрировать и даже предотвратить упомянутые действия в файлы, которые Вы хотите любым пользователем включая корень.

Dtrace может также использоваться, чтобы заморозить виновный процесс и позволить Вам принять решение возобновить или уничтожить его.

2
27.01.2020, 23:13

Теги

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