Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Более полная информация о правилах и их составлении дана на странице polkit или доступна по команде "man 8 polkit".

Примеры правил

Назначение администратора операционной системы (пример использования метода addAdminRule)

...

При написании правил необходимо учитывать порядок следования правил относительно друг друга. Процесс обработки правил останавливается после первого правила, вернувшего результат.

Примечание

В ОС Astra Linux, использующей мандатный контроль целостности, после создания какого-либо нового файла с правилом в каталогах /etc/polkit-1/rules.d/ и /usr/share/polkit-1/rules.d

...

Блок кода
polkit.addAdminRule(function(action, subject) {
    return ["unix-group:astra-admin"];
});

Отладочное журналирование (пример использования метода log)

Примечание

Журналирование следует использовать только на время отладки работы системы авторизации polkit.

Сделаем, например, чтобы при вызове команды pkexec в системный журнал выводилась дополнительная информация о действии и о пользователе, запустившем эту команду:

...

: polkitd перестаёт работать, а в системном журнале появляется запись:
polkitd[5403]: Insufficient integrity level of file '/etc/polkit-1/rules.d/10-default.rules'

Необходимо настроить мандатный контроль целостности для файла 10-default.rules либо, как временный вариант, разместить правило в уже существующем 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 в системный журнал выводилась дополнительная информация о действии и о пользователе, запустившем эту команду:

  1. Создать файл /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.
  2. Разрешить службе -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
  3. Перечитать настройки системного менеджера systemd, чтобы служба polkitd "подхватила" удаление опции --no-debug:
    Command

    sudo systemctl daemon-reload

  4. Перезапустить службу polkitd, чтобы она начала выводить отладочные сообщения в системный журнал:
    Command

    sudo systemctl restart polkit

  5. Запустить команду:
    Command

    pkexec -u administrator echo "test"

  6. В системном журнале появятся записи о действии "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]

...