У меня небольшая диагностическая программа OSX - небольшое приложение для меню, которое мне нужно получить у клиента. Программа использует dtrace. Таким образом, он имеет вспомогательный исполняемый файл в своей директории MacOS с установленным битом suid и правами на root: wheel. Единственная роль помощника - немедленно выполнить exec() для dtrace с включенным скриптом dtrace.Как распространять программу OSX с битом suid, установленным через DMG?
Моя проблема заключается в том, что я не могу найти хороший способ получить это у клиента. Наивно вставляя его в архив .zip, уничтожили все специальные разрешения.
Когда я попытался поместить его в DMG, корень: право собственности на колесо было сброшено до моего (ted: staff). Я обнаружил, что должен был использовать diskutil
до enableOwnership
на DMG, чтобы он начал уважать настройки прав на файл. Итак, теперь я вижу, что внутри DMG моя вспомогательная программа имеет необходимые права root: wheel и + suid.
Теперь, однако, я обнаружил, что, когда я перетаскиваю пакет приложений из DMG и на рабочий стол, разрешения снова обновляются. Более того, когда я пытаюсь запустить приложение из DMG, он ведет себя так, как будто у вспомогательной программы нет установленного бита suid.
Отступив от этого немного, я не понимаю, почему это должно работать вообще. Похоже, что это будет неприятная и действительно очевидная дыра в безопасности, которая позволит разработчикам распространять пакеты приложений с установленным таким образом битом suid.
Как это вообще делается? Нужен ли мне установщик пакетов? Будет ли это сохранить бит suid? Может кто-нибудь обучить меня, как это предположительно работать?
Yup - попытался создать инсталлятор пакета, и он сработал. Благодаря! –