polkit настраивается с использованием файлов правил, написанных на javascript.
Вы пишете собственные функции и передаете их в качестве аргумента в polkit.addRule()
. Когда выполняется действие polkit, функции вызываются по порядку, пока одна из них не вернет результат. (В противном случае используются значения по умолчанию).
Функция правила вызывается с двумя параметрами: именем действия
и объектом subject
.
Вы можете использовать subject.isInGroup("wheel")
, чтобы проверить, входит ли пользователь в группу "wheel".
По умолчанию в polkit используется концепция того, является ли пользователь «администратором» или нет. То, что означает эта концепция, может быть изменено с помощью polkit.addAdminRule() несколько странным образом. Значение по умолчанию для этого зависит от дистрибутива. В некоторых дистрибутивах администраторы помещены в группу «колесо». В других дистрибутивах группа «sudo» считается администратором.
Можно ли написать функцию для polkit.addRule() в переносимом стиле, которая проверяет, входит ли субъект в группу администраторов дистрибутива, вместо того, чтобы жестко кодировать группу «wheel» или «sudo»?
Это невозможно.
Это не очень распространенный тип политики безопасности -, будь то для polkit или чего-то еще. Многие вещи используют либо группу, либо запрос пароля polkit.
Я заметил, что этот тип политики используется только для PackageKit. (Я предполагаю, что группа администраторов определяется дистрибутивом, когда он компилирует PackageKit ).