Ограничить доступ к системным функциям для библиотеки C++ во время компиляции
Я нахожусь на пути реализации некоторой системы плагинов для приложения C++. Я бы назвал это изменчивым. Плагин является общей библиотекой *.so
,
требование
Не разрешать любые звонки в систему.
эта проблема
Поскольку плагин SO загружен приложением, он наследует все права и доступы. Мы не доверяем плагину.
идея
Из заданного исходного кода C++ плагина скомпилируйте SO со специальными флагами GCC/CLang, например --do-not-link-filesystem
, --do-not-link-pthread
, Поэтому, если этот код попытается получить доступ к системным ресурсам, он потерпит неудачу во время компиляции. Это дает лучшую гарантию.
Плагин может вызывать интерфейс, предоставляемый приложением.
СТЛ <vector>
, <algorithm>
а также <boost/template-only-headers>
все еще должен быть доступен.
идея 2
Запустите ApplicationHelper, чтобы загрузить Plugin.so в ограниченный контейнер и / или запустить как пользователь с ограниченными правами. выглядит тяжело
вопрос
- Можно ли реализовать идею 1 - ограничить доступ во время компиляции?
- Расскажите пожалуйста, как реализовать идею 2 в Linux, особенно Ubuntu.