Salta al contingut

Executa ordres com a root sense autenticació

En molts sistemes operatius basats en Linux, els usuaris avançats poden utilitzar el fitxer /etc/sudoers per a permetre executar certes ordres utilitzant sudo sense que se'ls demani que s'autentiquin. KDE Linux no té /etc/sudoers ni sudo, per tant, com es pot aconseguir el mateix?

La resposta és configurar un servei del systemd que executi l'ordre especificada, i després una regla del polkit que permeti invocar el servei del sistema sense necessitat d'autenticar-se.

Servei del systemd

Heus aquí un exemple de servei del systemd que executa /usr/bin/systemd-sysext refresh --always-refresh=yes per actualitzar les extensions del systemd:

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

[Unit]
Description=Refresh systemd extensions

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

Regla del polkit

I aquí hi ha un exemple de regla del polkit que permet als membres actius del grup wheel connectats localment invocar aquest servei del systemd sense autenticar:

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

Per a reforçar encara més aquesta regla de manera que només us eviti l'autenticació a vós, substituïu «wheel» pel vostre nom d'usuari.

Fer-lo servir

Després de crear els dos fitxers, podeu actualitzar les extensions del systemd sense autenticar-vos invocant el servei del systemd: systemctl start sysext-refresh.

El mateix es pot fer per a qualsevol altra ordre; simplement creeu els serveis del systemd apropiats i regles polkit per a ells.

Més informació


Article escrit per d'acord amb la llicència CC-BY-4.0.