Spring naar inhoud

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 onder de licentie CC-BY-4.0.