...
Более полная информация о правилах и их составлении дана на странице polkit или доступна по команде "man 8 polkit".
Примеры правил
Назначение администратора операционной системы (пример использования метода addAdminRule)
...
При написании правил необходимо учитывать порядок следования правил относительно друг друга. Процесс обработки правил останавливается после первого правила, вернувшего результат.
| Примечание |
|---|
В ОС Astra Linux, использующей мандатный контроль целостности, после создания какого-либо нового файла с правилом в каталогах |
...
| Блок кода |
|---|
polkit.addAdminRule(function(action, subject) {
return ["unix-group:astra-admin"];
}); |
Отладочное журналирование (пример использования метода log)
| Примечание |
|---|
Журналирование следует использовать только на время отладки работы системы авторизации polkit. |
Сделаем, например, чтобы при вызове команды pkexec в системный журнал выводилась дополнительная информация о действии и о пользователе, запустившем эту команду:
...
: polkitd перестаёт работать, а в системном журнале появляется запись: Необходимо настроить мандатный контроль целостности для файла 10-default.rules либо, как временный вариант, разместить правило в уже существующем |
Назначение администратора операционной системы (пример использования метода addAdminRule)
В Astra Linux с помощью правила, содержащегося в файле /usr/share/
...
polkit-1/rules.d/
...
50-default.rules
...
, пользователи группы astra-admin назначаются администраторами системы:
| Блок кода |
|---|
polkit. |
...
addAdminRule(function(action, subject) { |
...
|
...
|
...
return ["unix-group:astra-admin"]; }); |
Отладочное журналирование (пример использования метода log)
| Примечание |
|---|
Журналирование следует использовать только на время отладки работы системы авторизации polkit. |
Сделаем, например, чтобы при вызове команды pkexec в системный журнал выводилась дополнительная информация о действии и о пользователе, запустившем эту команду:
- Создать файл
/etc/polkit.log("action=" + action); polkit.log("subject=" + subject); } });гдеorg.freedesktop.policykit.exec– название действия, соответствующего команде pkexec. В ОС Astra Linux, использующей мандатный контроль целостности, после создания какого-либо нового файла с правилом в каталогахПримечание /etc/polkit-1/rules.d/и /usr/share/polkit-1/rules.d: polkitd перестаёт работать, а в системном журнале появляется запись:
polkitd[5403]: Insufficient integrity level of file '/etc/polkit-1/rules.d/10/10-default.rulesс правилом:
гдеБлок кода polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.policykit.exec") { polkit.log("action=" + action); polkit.log("subject=" + subject); } });org.freedesktop.policykit.exec– название действия, соответствующего команде pkexec. - Разрешить службе -default.rules'
Необходимо настроить мандатный контроль целостности для файла 10-default.rules либо, как временный вариант, разместить правило в уже существующем
Разрешить службеrules-файле.polkitdвыводить в системный журнал отладочные сообщения.
Для этого в файле systemd-юнита/usr/lib/systemd/system/polkit.serviceубрать из значения параметраExecStartопцию--no-debug:Блок кода [Unit] Description=Authorization Manager Documentation=man:polkit(8) [Service] Type=dbus BusName=org.freedesktop.PolicyKit1 ExecStart=/usr/lib/polkit-1/polkitd --min-ilev-auth-admin=max
- Перечитать настройки системного менеджера
systemd, чтобы служба polkitd "подхватила" удаление опции--no-debug:Command sudo systemctl daemon-reload
- Перезапустить службу
polkitd, чтобы она начала выводить отладочные сообщения в системный журнал:Command sudo systemctl restart polkit
- Запустить команду:
Command pkexec -u administrator echo "test"
- В системном журнале появятся записи о действии "action=..." и о пользователе "subject=...":
Блок кода сен 22 12:51:44 astra-28739 polkitd[7867]: action=[Action id='org.freedesktop.policykit.exec' program='/usr/bin/echo' user.display='administrator' command_line='/usr/bin/echo test' user='administrator' polkit.message='Authentication is needed to run `$(program)' as user $(user.display)' polkit.gettext_domain='polkit-1' user.gecos=''] сен 22 12:51:44 astra-28739 polkitd[7867]: subject=[Subject pid=4297 user='administrator' groups=administrator,tty,dialout,cdrom,floppy,audio,dip,video,plugdev,users,netdev,lpadmin,scanner,astra-admin,astra-console seat=null session='7' local=false active=true]
...