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

Ключ

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

...

Поставщик операционной системы и системный администратор могут изменить поведение системы авторизации с помощью правил авторизации.

Примечание

Система авторизации polkit не влияет на работу других способов увеличения прав пользователя.

Например, у пользователя есть право запуска какой-то программы с помощью команды sudo. Если в менеджере авторизации polkitd запретить пользователю запускать эту программу, то у пользователя всё-равно останется возможность запуска программы с помощью sudo.


Официальная документация расположена на странице "polkit Reference Manual".

...

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

Запрещение

...

пользователю

...

запускать ряд команд

...

Правило:

  • относится только к пользователю user1;
  • запрещает запускать команду по изменению имени узла "hostnamectl hostname <имя_узла>";
  • запрещает запускать программу GParted "/usr/sbin/gparted";
  • доступ к остальным командам определяется другими существующими правилами, а также правами доступа по умолчанию в policy-файлах:
Блок кода
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.

Команде GParted "/usr/sbin/gparted" соответствует действие "org.gnome.gparted". 
Права по умолчанию на выполнение действия заданы Действие программы 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.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;
});

...