2014-04-14 5 views
1

У меня небольшая диагностическая программа 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? Может кто-нибудь обучить меня, как это предположительно работать?

ответ

2

Вы правы, что (если бы был простой способ сделать это), это было бы неприятное отверстие безопасности. Вы никогда не сможете создавать/устанавливать исполняемый файл root setid, не пройдя какой-либо шаг авторизации администратора. В самом деле, вы даже не сможете создавать/устанавливать файл с правом собственности на любого пользователя, кроме вашего собственного.

(Фактически, есть исключение из 10.9: приложение Store позволит вам устанавливать приложения без прав администратора, но это считается относительно безопасным, потому что Apple проверяет приложения до их разрешения в магазине.)

«Правильный» способ сделать это с помощью установщика пакетов. Его можно настроить для запроса авторизации администратора для установки и использовать его для установки файлов с любыми правами и разрешениями (включая бит setuid).

+0

Yup - попытался создать инсталлятор пакета, и он сработал. Благодаря! –

0

Возможно, с помощью файла .tar будет работать. Они очень хороши для того, чтобы хранить весь определенный багаж UNIX, как собственность, прикрепленную к папкам и файлам внутри них.

 Смежные вопросы

  • Нет связанных вопросов^_^