Preskoči na vsebino

Zaganjaj ukaze kot root brez avtentikacije

V številnih operacijskih sistemih, ki temeljijo na Linuxu, lahko napredni uporabniki s pomočjo datoteke /etc/sudoers omogočijo izvajanje določenih ukazov z uporabo sudo, ne da bi morali pri tem opraviti avtentikacijo. Ker KDE Linux nima niti datoteke /etc/sudoers niti ukaza sudo, se poraja vprašanje: kako je mogoče doseči isto?

Rešitev je vzpostavitev storitve systemd, ki izvaja določen ukaz, ter pravila polkit, ki omogoča zagon te sistemske storitve brez potrebe po avtentikaciji.

Storitev systemd

Tukaj je primer storitve systemd, ki izvede ukaz /usr/bin/systemd-sysext refresh --always-refresh=yes za osvežitev razširitev systemd:

/etc/systemd/system/sysext-refresh.service

[Unit]
Description=Refresh systemd extensions

[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-sysext refresh --always-refresh=yes

Pravilo polkit

Tukaj pa je primer pravila za polkit, ki lokalno prijavljenim aktivnim članom skupine wheel omogoča zagon te storitve systemd brez avtentikacije:

/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;
    }
});

Da bi to pravilo dodatno omejili tako, da bo preverjanje pristnosti preskočilo le za vas, zamenjajte »wheel« s svojim uporabniškim imenom.

Uporaba tega

Ko ustvarite obe datoteki, lahko osvežite razširitve systemd brez avtentikacije s klicem storitve systemd: systemctl start sysext-refresh.

Enako velja za vse druge ukaze; zanje preprosto ustvarite ustrezne storitve systemd in pravila polkit.

Več informacij


Članek je prispeval z dovoljenjem CC-BY-4.0.