У меня есть проект Java, который использует библиотеку Bluecove , для этой библиотеки требуются права суперпользователя для выполнения определенных действий, которые мне требуются в моем проекте. Здесь следует отметить, что, несмотря на то, что проект основан на Java, он предназначен только для Linux.
В проекте будет много функций, которым не требуются привилегии root, некоторые из которых должны будут взаимодействовать с функциями привилегий root, а некоторые - нет.
Кроме того, проект будет выполнять такие программы, как hciconfig , используя введенные пользователем данные с правами суперпользователя.
Вся эта корневая активность заставляет меня беспокоиться о безопасности моей системы. Целевой машиной будет собственный компьютер пользователя, и не планируется запускать эту систему на каком-либо общедоступном терминале, но безопасность по-прежнему важна, поскольку неизвестные внешние устройства Bluetooth могут взаимодействовать с этой системой.
До сих пор мои меры безопасности включали сильную фильтрацию пользовательского ввода и очень внимательное отношение ко всем действиям, которые внешние устройства Bluetooth будут выполнять в системе, но я все больше и больше недоволен этим.
Что бы люди порекомендовали? Одна мысль состоит в том, чтобы разделить систему на два или три модуля, один из которых содержит GUI и некорневый бэкэнд, один содержит корневой бэкэнд Bluecove и, возможно, корневую оболочку для hciconfig и других используемых инструментов.
Я заметил, что некоторые программы, например Apache, однажды запускают «выпадающие» свои привилегии. Как это достигается и эффективно ли это?