...
Поставщик операционной системы и системный администратор могут изменить поведение системы авторизации с помощью правил авторизации.
| Примечание |
|---|
Система авторизации polkit не влияет на работу других способов увеличения прав пользователя. Например, у пользователя есть право запуска какой-то программы с помощью команды |
Официальная документация расположена на странице "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;
}); |
...