Я пытаюсь установить самодельный LaunchDaemon в OS X 10.10, однако, я сталкиваюсь с некоторыми странными ошибками и не могу найти решение .. надеюсь, кто-то знает ответ, я гуглю свою задницу для этого ..
в основном у меня есть простая программа (написанная на C ++), установленная в / Library / Application Support / myfolder / myprogram. Я установил разрешение следующим образом:
chown root /Application Support/myfolder/myprogram
chmod 644 /Application Support/myfolder/myprogram
Я получил .plist для папки LaunchDaemons, установленной правильно (я уверен в этом).
Теперь, когда я загружаю свой компьютер, я нахожу это в своих журналах (цикл):
taskgated: no signature for pid=xxx (cannot make code: UNIX[no such process])
com.apple.xpc.launchd: (my.launchdaemons.plist) Service exited duo to signal: Killed: 9
com.apple.xpc.launchd: (my.launchdaemons.plist) Service ran only for 0 seconds. Pushing respawn out by 10 seconds.
Ладно, похоже, что демон, управляемый заданиями, думает, что моя программа «небезопасна», и поэтому блокирует ее выполнение. Предполагаю, что это основано на проверке подписи, я не подписывал свою программу … и я не хочу это делать.
Поэтому я попытался отключить эту проверку, изменив taskgated.plist, добавив аргумент -p при запуске taskgated, но это не сработало, но все равно получала ту же ошибку.
Затем я попытался отключить проверку подписи во всей системе (я знаю, что это большой риск для безопасности, но это было только для целей тестирования) с помощью:
sudo spctl --master-disable
Но угадайте, что: Все еще получая ту же ошибку (даже после перезагрузки).
Простое уничтожение Taskgated также не помогает (вы не можете запустить какую-либо программу, кроме тех, которые были открыты до убийства Taskgated).
Итак, есть ли какой-нибудь способ обойти эту надоедливую проверку подписи или какой-то другой способ фактически запустить мою программу?
На Mac я скомпилировал программу (это не тот компьютер, на котором я пытаюсь ее установить), она просто работает нормально. Я имею в виду, я могу запустить мою программу из терминала, как:
bash$> ./myprogram
<output>
bash$>
но на компьютере я хочу установить его, я получаю это:
bash$> ./myprogram
Killed: 9
bash$>
Просто перенес программу с помощью USB Stick с одного компьютера на другой … Не могу понять, в чем дело …: /
Задача ещё не решена.