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

Ключ

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

...

Например, атрибут subject.user содержит имя учётной записи пользователя.


Методы объекта:

МетодВозвращаемое значение
subject.isInGroup( "<название_группы>" );Истина, если объект subject состоит в группе <название_группы>
subject.isInNetGroup( "<название_сетевой_группы>" );Истина, если объект subject состоит в сетевой группе <название_сетевой_группы>



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

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

Назначение администратора операционной системы (пример использования метода 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.

...

  1. Создать файл /etc/polkit-1/rules.d/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.
    Примечание

    В ОС 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-default.rules'

    Необходимо настроить мандатный контроль целостности для файла 10-default.rules либо, как временный вариант, разместить правило в уже существующем rules-файле.

  2. Разрешить службе 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]

Запуск команды без запроса пароля (файл 50-local-allow.rules из состава polkitd)

При установке пакета polkitd устанавливается файл /usr/share/doc/polkitd/50-local-allow.rules:

...

В результате пользователь, входящий в группу astra-admin сможет запускать команду "systemctl restart apt-daily" без использования команды sudo и без запроса пароля от polkitd.

Запрет на запуск команды (файл 50-local-deny.rules из состава polkitd)

При установке пакета polkitd устанавливается файл /usr/share/doc/polkitd/50-local-deny.rules:

...