...
В результате пользователь, входящий в группу astra-admin сможет запускать команду "systemctl restart apt-daily" без использования команды sudo и без запроса пароля от polkitd.
Разрешение любому пользователю изменять имя
...
узла
Пример правила, которое позволяет любому пользователю выполнить выполнять команду "hostnamectl hostname <имя_узла>" без запроса пароля администратора:
...
Команде "hostnamectl hostname <имя_узла>" соответствует действие "org.freedesktop.hostname1.set-hostname".
Права по умолчанию на выполнение действия заданы в файле /usr/share/polkit-1/actions/org.freedesktop.hostname1.policy.
...
Скопировать файл в каталог /etc/polkit-1/rules.d/ и изменить 50 на 00, чтобы правило гарантированно срабатывало раньше других правил.
Запрещение определённому пользователю выполнять ряд команд
Пример правила, которое запрещает пользователю 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;
}
}); |
Команде по изменению имени узла "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 |
Каталоги
| Каталог | Описание |
|---|---|
| /usr/share/polkit-1/actions/ | Каталог policy-файлов с описаниями действий программ |
/etc/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, описание которых дано в статье |
...