Развертывание приложения с правами root - PullRequest
4 голосов
/ 09 декабря 2010

Я написал приложение Cocoa, которое использует libpcap для мониторинга сетевого трафика.Поскольку libpcap требует привилегий суперпользователя, мне было интересно, как лучше всего предоставить ему привилегии суперпользователя (например, с помощью Package Maker?).Смогу ли я развернуть его, используя установщик с перетаскиванием, или Package Maker - мой единственный вариант?

Кроме того, я хотел бы знать о рисках безопасности, связанных с предоставлением корневых прав моему приложению.Приложение также записывает данные на диск (база данных sqlite), и я прочитал, что давать приложение, записывающее права суперпользователя диска, не очень хорошая идея.

1 Ответ

8 голосов
/ 09 декабря 2010

Рекомендованный Apple способ сделать то, что вы хотите, заключается в следующем:

  • выделяет материал, требующий привилегированных операций, в отдельный исполняемый файл (это тот материал, который использует libpcap для вас).
  • когда приложение должно запустить привилегированный exe-файл, оно создает ссылку авторизации и проверяет, что пользователь может авторизоваться (так называемая предварительная авторизация), и передает внешнюю ссылку на авторизацию привилегированному exe-файлу.
  • при первом запуске привилегированный exe снова получает авторизацию, прежде чем пытаться выполнить привилегированные действия.

Чтобы вышеперечисленное работало, привилегированный exe-файл должен быть установлен как принадлежащий root с установленным битом setuid. Вы можете сделать это с помощью создателя пакета или создать то, что Apple называет самовосстанавливающимся вспомогательным инструментом . Это инструмент, который проверяет, работает ли он от имени пользователя root и, если нет, вызывает себя через AuthorizationExecuteWithPrivileges , чтобы восстановить его бит setuid и владельца. Затем он выполняет авторизацию для операции и выполняет операцию.

Если вы используете самовосстанавливающийся инструмент, вы можете связать его с вашим приложением и использовать процесс установки методом перетаскивания.

Я настоятельно советую вам прочитать полное руководство по авторизации . Он рассказывает обо всем этом более подробно и включает в себя пример кода.

...