Я работаю над приложением, которое должно использовать dd (я делаю это с помощью сценария оболочки в комплекте приложений, который собирает параметры из самого приложения, делает некоторые проверки и затем запускает dd).
Чтобы выполнить эту операцию, мне нужно вызвать dd с правами root, и я уже рассмотрел несколько решений StackOverflow. Мне показалось, что это самое простое орудие http://www.sveinbjorn.org/STPrivilegedTask
Проблема в том, что мой NSTask выполняет некоторые сложные операции чтения / записи (отсутствуют в STPrivilegedTask) и ему не нужно быть привилегированным.
Итак, я написал небольшой вспомогательный инструмент на языке c, который вызывает мой скрипт с правильными параметрами из моего приложения. Решение, которое я подумал, состоит в том, чтобы использовать STPrivilegedTask для SUID сразу после запуска моего маленького вспомогательного инструмента, чтобы я мог запустить его (и мой сценарий и dd) с помощью root, и вскоре после успешного запуска я установил вспомогательный инструмент на не SUID ( и я делаю то же самое, если возникает какая-либо ошибка, при выходе из приложения, запуске приложения и т. д., чтобы быть более безопасным).
Я реализовал это и работает довольно хорошо, может быть, он не идеален, но я думаю, что все в пакете и работа с вспомогательным инструментом в SUID только для запуска звучит достаточно безопасно.
Есть мысли?
Спасибо!