Spouštění příkazů jako root bez ověření
V mnoha operačních systémech založených na Linuxu mohou pokročilí uživatelé pomocí souboru /etc/sudoers nastavit, aby bylo možné spouštět určité příkazy pomocí sudo bez nutnosti ověření. KDE Linux nemá ani soubor /etc/sudoers, ani příkaz sudo, jak tedy lze dosáhnout stejného výsledku?
Řešením je nastavit službu systemd, která spustí zadaný příkaz, a následně pravidlo polkit, které vám umožní spustit tuto systémovou službu bez nutnosti ověření.
Služba Systemd
Zde je příklad služby systemd, která spouští příkaz /usr/bin/systemd-sysext refresh --always-refresh=yes za účelem aktualizace rozšíření systemd:
/etc/systemd/system/sysext-refresh.service
[Unit]
Description=Refresh systemd extensions
[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-sysext refresh --always-refresh=yes
Pravidlo Polkit
A zde je příklad pravidla polkit, které umožňuje aktivním členům skupiny wheel, kteří jsou přihlášeni lokálně, spustit tuto službu systemd bez nutnosti ověření:
/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;
}
});
Chcete-li toto pravidlo ještě více omezit tak, aby obcházelo ověřování pouze pro vás, nahraďte „wheel“ svým uživatelským jménem.
Použijte to
Po vytvoření obou souborů můžete aktualizovat rozšíření systemd bez nutnosti přihlášení spuštěním služby systemd: systemctl start sysext-refresh.
Totéž lze provést u jakýchkoli dalších příkazů; stačí pro ně vytvořit příslušné služby systemd a pravidla polkit.
Více informací
Tento přípěvek napsal Nate Graham pod licencí CC-BY-4.0.