Если kext, который вы пытаетесь загрузить или выгрузить, не был специально отмечен как загружаемый непривилегированными пользователями, вам определенно понадобятся права root.Есть C API для загрузки и выгрузки кексов.Он определен в <libkern/OSKext.h>
, и следующие функции, вероятно, следующие:
OSKextCreate()
OSKextLoadWithOptions()
OSKextUnloadKextWithIdentifier()
Рекомендуемый метод для вызова функций с повышенными привилегиями - установить привилегированный вспомогательный инструмент с помощью SMJobBless()
, запустить его и связаться с ним через XPC.Таким образом, пароль администратора пользователя требуется только один раз, во время вызова SMJobBless
, и он также работает для пользователей, у которых sudo
не работает.(sudo
работает только в том случае, если пользователь входит в группу wheel
, и только если у него установлен пароль пользователя.)