Запуск команд от имени root без проверки подлинности
Во многих операционных системах на основе Linux опытные пользователи могут настроить файл /etc/sudoers так, чтобы определённые команды выполнялись через sudo без запроса проверки подлинности. В KDE Linux нет ни /etc/sudoers, ни sudo. Как добиться того же?
Для этого нужно создать службу systemd, которая выполняет нужную команду, и правило polkit, которое разрешает запускать эту системную службу без проверки подлинности.
Служба systemd
Вот пример службы systemd, которая выполняет /usr/bin/systemd-sysext refresh --always-refresh=yes, чтобы обновить системные расширения:
/etc/systemd/system/sysext-refresh.service
[Unit]
Description=Refresh systemd extensions
[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-sysext refresh --always-refresh=yes
Правило polkit
А вот пример правила polkit, которое разрешает активным участникам группы wheel, вошедшим в систему локально, запускать эту службу systemd без проверки подлинности:
/etc/polkit-1/rules.d/50-sysext-refresh.rules
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
action.lookup("unit") == "sysext-refresh.service" &&
action.lookup("verb") == "start" &&
subject.local &&
subject.active &&
subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
Чтобы правило отменяло проверку подлинности только для вас, замените «wheel» своим именем пользователя.
Применение
Когда оба файла созданы, системные расширения можно обновлять без проверки подлинности, запуская службу systemd: systemctl start sysext-refresh.
То же самое можно сделать для любых других команд: достаточно создать для них соответствующие службы systemd и правила polkit.
Дополнительные сведения
Статья предоставлена Nate Graham и распространяется под лицензией CC-BY-4.0.