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

Ключ

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

...

Команде "hostnamectl hostname <имя_узла>" соответствует действие "org.freedesktop.hostname1.set-hostname". 
Права по умолчанию на выполнение действия заданы в файле /usr/share/polkit-1/actions/org.freedesktop.hostname1.policy.

Разрешение группе пользователей выполнять определённые команды и запрет на выполнение всех остальных

Правило:

...


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

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

...

:

Блок кода
polkit.addRule(function(action, subject) {
    if (subject.user !== subject.isInGroup("group1guest")) {
        // Continue to the next rules file for users other than guest
        return polkit.Result.NOT_HANDLED;
    }

    if (action.id === "org.freedesktop.NetworkManager.settings.hostname1modify.set-hostnamesystem") {
        return polkit.Result.YES;
    }
// Don't allow reconfiguring NetworkManager
    if (action.id == "org.gnome.gparted") {
        return polkit.Result.AUTH_ADMINNO;
    }

      returnreturn polkit.Result.NONOT_HANDLED;
});

Действие команды "hostnamectl hostname <имя_узла>" описано в файле /usr/share/polkit-1/actions/org.freedesktop.hostname1.policy.

Действие программы GParted описано в файле /usr/share/polkit-1/actions/org.gnome.gparted.policy.

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

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

Не показано правило, запрещающее запуск программы PackageKit, которая не используется в Astra Linux.

Правилом задаётся:

  • пользователю guest;
  • запрещено ("return polkit.Result.NO");
  • изменение сетевых настроек в программе NetworkManager (название действия "org.freedesktop.NetworkManager.settings.modify.system").

Скопировать файл в каталог /etc/polkit-1/rules.d/ и изменить 50 на 00, чтобы правило гарантированно срабатывало раньше других правил.

Запрещение определённому пользователю выполнять ряд команд

Пример правила, которое запрещает пользователю user1 изменять имя узла, а также запускать программу GParted:

Блок кода
polkit.addRule(function(action, subject) {
    if (subject.user !== "user1") {
        return polkit.Result.NOT_HANDLED;
    }
Блок кода
polkit.addRule(function(action, subject) {
    if (subjectaction.userid !== "guestorg.freedesktop.hostname1.set-hostname") {
        return polkit.Result.NO;
  // Continue to}

 the next rules file for users other than guestif (action.id == "org.gnome.gparted") {
        return polkit.Result.NOT_HANDLEDNO;
    }

     if (action.id === "org.freedesktop.NetworkManager.settings.modify.system") {
        // Don't allow reconfiguring NetworkManager
        return polkit.Result.NO;
    }

    return polkit.Result.NOT_HANDLED;
});

Не показано правило, запрещающее запуск программы PackageKit, которая не используется в Astra Linux.

Правилом задаётся:

  • пользователю guest;
  • запрещено ("return polkit.Result.NO");
  • изменение сетевых настроек в программе NetworkManager (название действия "org.freedesktop.NetworkManager.settings.modify.system").

Скопировать файл в каталог /etc/polkit-1/rules.d/ и изменить 50 на 00, чтобы правило гарантированно срабатывало раньше других правил.

Запрещение определённому пользователю выполнять ряд команд

...

 return polkit.Result.NOT_HANDLED;
});

Команде по изменению имени узла "hostnamectl hostname <имя_узла>" соответствует действие "org.freedesktop.hostname1.set-hostname". 
Права по умолчанию на выполнение действия заданы в файле /usr/share/polkit-1/actions/org.freedesktop.hostname1.policy.

Команде GParted "/usr/sbin/gparted" соответствует действие "org.gnome.gparted". 
Права по умолчанию на выполнение действия заданы в файле /usr/share/polkit-1/actions/org.gnome.gparted.policy.


У пользователя не будет запрашиваться пароль, а будет сразу выведено сообщение о запрете на выполнение команды.

Например, если пользователь user1 запустит запрещённую команду "hostnamectl hostname <имя_узла>", то в ответ он получит сообщение:

Блок кода
Could not set transient hostname: Access denied

Запрещение группе пользователей выполнять все команды, кроме указанных

Правило:

  • относится только к пользователям, состоящим в группе group1;
  • разрешает запускать команду по изменению имени узла "hostnamectl hostname <имя_узла>" без запроса пароля;
  • разрешает запускать программу GParted "/usr/sbin/gparted" с запросом пароля администратора;
  • запрещает запускать все остальные команды, которые используют менеджер авторизации polkitd:
Блок кода
polkit.addRule(function(action, subject) {
    if (subject.user !== subject.isInGroup("user1group1")) {
        return polkit.Result.NOT_HANDLED;
    }

    if (action.id == "org.freedesktop.hostname1.set-hostname") {
        return polkit.Result.NOYES;
    }

    if (action.id == "org.gnome.gparted") {
        return polkit.Result.NOAUTH_ADMIN;
    }

    return polkit.Result.NOT_HANDLEDNO;
});

Команде по изменению имени узла Действие команды "hostnamectl hostname <имя_узла>" соответствует действие "org.freedesktop.hostname1.set-hostname". 
Права по умолчанию на выполнение действия заданы в файле описано в файле /usr/share/polkit-1/actions/org.freedesktop.hostname1.policy.
/org.freedesktop.hostname1.policy.

Действие программы GParted описано Команде GParted "/usr/sbin/gparted" соответствует действие "org.gnome.gparted". 
Права по умолчанию на выполнение действия заданы в файле /usr/share/polkit-1/actions/org.gnome.gparted.policy.

У пользователя не будет запрашиваться пароль, а будет сразу выведено сообщение о запрете на выполнение команды.

Например, если пользователь user1 запустит запрещённую команду "hostnamectl hostname <имя_узла>", то в ответ он получит сообщение:

...

Каталоги

КаталогОписание
/usr/share/polkit-1/actions/
Каталог policy-файлов с описаниями действий программ

/etc/polkit-1/rules.d/
/usr/share/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, описание которых дано в статье

...