История изменений
Исправление gns, (текущая версия) :
Реальный сценарий похож на аппрамор — есть куча правил типа путь - правило действия с ним. Аппармор только ограничивает, а мне еще с этим путем много чего сделать надо, включая послать размер и хеш нового содержимого файла, буде его кто-то из юзерспейса изменил.
Представь себе смесь аппармора и коммерческого монитора от tripware. Правила формируются в юзерспейсе и могут периодически меняться централизовано. Соответственно, их надо перегружать в ядро в произвольный момент времени. Сравнивать список правил с целевым путем долго и утомительно (длина пути помножить на сумму длин правил). Так вот я хочу, что бы они до регекс-автомата компилировались в юзерспейсе и в ядро грузился автомат разбора. Так делает аппармор и так делает selinux.
Статические генераторы регексов типа re2c, ragel, или lex не годятся. Можно, конечно, задействовать компилятор от bpf и грузить bpf-апплеты, но, боюсь, возни там будет больше. Или налетим на какие-то ограничения bpf-песочницы.
Исходная версия gns, :
Реальный сценарий похож на аппрамор — есть куча правил типа путь - правило действия с ним. Аппармор только ограничивает, а мне еще с этим путем много чего сделать надо, включая послать размер и хеш нового содержимого файла, буде его кто-то из юзерспейса изменил.
Представь себе смесь аппармора и коммерческого монитора от tripware. Правила формируются в юзерспейсе и могут периодически меняться централизовано. Соответственно, их надо перегружать в ядро в произвольный момент времени. Сравнивать список правил с целевым путем долго и утомительно (длина пути помножить на сумму длин правил). Так вот я хочу, что бы они до регекс-автомата компилировались в юзерспейсе и в ядро грузился автомат разбора. Так делает аппармор и так делает selinux.
Статические генераторы регексов типа re2c, ragel, или lex не годятся. Можно, конечно, задействовать компилятор от bpf, и грузить bpf-апплеты, но, боюсь, возни там будет больше. Или налетим на какие-то ограничения bpf-песочницы.