Commando's uitvoeren als root zonder authenticatie
Op veel op Linux gebaseerde besturingssystemen kunnen gevorderde gebruikers het bestand /etc/sudoers gebruiken om bepaalde opdrachten via sudo uit te voeren zonder dat er om authenticatie wordt gevraagd. KDE Linux beschikt echter niet over /etc/sudoers of sudo; hoe kan dit dan toch worden bereikt?
De oplossing is om een systemd-service op te zetten die het opgegeven commando uitvoert, en vervolgens een polkit-regel aan te maken waarmee u die systemd-service kunt aanroepen zonder dat authenticatie vereist is.
Systemd-service
Hier is een voorbeeld van een systemd-service die /usr/bin/systemd-sysext refresh --always-refresh=yes uitvoert om systemd-extensies te verversen:
/etc/systemd/system/sysext-refresh.service
[Unit]
Description=Refresh systemd extensions
[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-sysext refresh --always-refresh=yes
Polkit-regel
En hier is een voorbeeld van een polkit-regel die lokaal ingelogde, actieve leden van de wheel-groep toestaat om die systemd-service aan te roepen zonder zich te hoeven authenticeren:
/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;
}
});
Om deze regel verder te beperken, zodat authenticatie alleen voor u wordt overgeslagen, vervangt u "wheel" door uw gebruikersnaam.
Gebruik het
Nadat u beide bestanden hebt aangemaakt, kunt u systemd-extensies verversen zonder authenticatie door de volgende systemd-service aan te roepen: systemctl start sysext-refresh.
Hetzelfde kan worden gedaan voor andere opdrachten; maak hiervoor simpelweg de bijbehorende systemd-services en polkit-regels aan.
Verdere informatie
Artikel bijgedragen door Nate Graham onder de licentie CC-BY-4.0.