Ещё раз про MAC'и
Неделю назад в @omsklug'е зашла речь про tomoyo и прочие mac'и. Пришлось вспомнить, почему я таки отказался от tomoyo в пользу apparmor'а. Безотносительно сложности писания политик (что упоминалось по ссылке выше), навскидку вспомнилось следующее:
Режим обучения
Да, он добавляет пути автоматически, но!
Представим, что приложение создаёт 2 временных файла в секунду (например squid). Через пару минут режим обучения превысит лимит на количество путей в профиле (допустим 500) и всё, последующие обращения обломаются, приложение упадёт. Чистить это говно - руками, пока не почистишь - даже не добавить регексп, описывающий эти самые временные файлы.
При этом squid - достаточно простое приложение в плане внешних взаимодействий.
Фатальный недостаток™
Фатальное недостаток™ в следующем: если тот же сквид запущен через
- init
- ssh/shell
ssh/mc/shell
для tomoyo это при разных приложения. Всё, приехали. Описать полный граф взаимодействий в скриптовом init'е - адовая боль, страдание и месяцы работы.
Другой пример - отправка почты с различных приложений. mail вызывается с десятка известный мест, и ещё с десятка неожиданных, притом хрен угадаешь заранее как именно, sh, rsh, bash или просто exec.
Да, есть aggregate, но блжад, для всех случаев их не добавишь. И при их черезмерном использовании вся "защита" рассеивается как дым.