...
Метод используется для запуска вспомогательной сторонней программы. Стандартный вывод этой программы будет возвращён как результат метода spawn. Программа запускается с правами пользователя polkitd.
Если при вызове сторонней программы произошла ошибка или программа завершилась не с кодом 0, то метод spawn прерывается с ошибкой исключения.
Если сторонняя программа не завершилась в течение 10 секунд, то она принудительно закрывается.
См.
Метод: polkit.log( message );
...
Действие команды "hostnamectl hostname <имя_узла>" описано в файле /usr/share/polkit-1/actions/org.freedesktop.hostname1.policy.
Действие программы GParted описано в файле /usr/share/polkit-1/actions/org.gnome.gparted.policy.
Запуск сторонней программы для определения права пользователя на выполнение действия
Правило:
- используется, когда пользователь вводит команду reboot для перезапуска операционной системы;
- запускает стороннюю программу "
/opt/company/bin/user-may-reboot", в качестве аргумента которой передаётся имя пользователя, запросившего действие; - программа "
/opt/company/bin/user-may-reboot" каким-то образом решает, можно или нет пользователю перезапустить систему; - если сторонняя программа завершилась в течение 10 секунд с кодом завершения 0, то действие, запрошенное пользователем, выполнится без запроса пароля;
- иначе у пользователя запрашивается пароль администратора для выполнения действия.
| Блок кода |
|---|
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.login1.reboot") == 0) {
try {
// user-may-reboot exits with success (exit code 0)
// only if the passed username is authorized
polkit.spawn(["/opt/company/bin/user-may-reboot",
subject.user]);
return polkit.Result.YES;
} catch (error) {
// Nope, but do allow admin authentication
return polkit.Result.AUTH_ADMIN;
}
}
}); |
Каталоги
| Каталог | Описание |
|---|---|
| /usr/share/polkit-1/actions/ | Каталог policy-файлов с описаниями действий программ |
/etc/polkit-1/rules.d/ | Каталоги rules-файлов с правилами авторизации, созданными поставщиком операционной системы или системным администратором |
| /etc/polkit-1/localauthority/ /var/lib/polkit-1/localauthority/ | Каталоги с правилами авторизации в устаревшем pkla-формате. Эти правила будут работать, если установлен пакет polkitd-pkla (устанавливается автоматически при установке ОС по умолчанию). В будущих версиях ОС возможен отказ от поддержки pkla-формата, из-за чего потребуется переписать правила в JavaScript-формате |
| /usr/share/doc/polkitd/examples/ | Каталог содержит примеры правил авторизации: 50-local-allow.rules и 50-local-deny.rules. Примеры описаны в статье. |
...