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

Ключ

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

...

Блок кода
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.hostname1.set-hostname") {
        return polkit.Result.YES;
    }

    return polkit.Result.NOT_HANDLED; 
});

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

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

Правило:

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

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

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

    return polkit.Result.NO;
});

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

...

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

Блок кода
	polkit.addRule(function(action, subject) {
    if (subject.user !== "user1") {
        return polkit.Result.NOT_HANDLED;
    }

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

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

    return polkit.Result.NOT_HANDLED;
});

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

...