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