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 Nate Graham z dovoljenjem CC-BY-4.0.