Passa al contenuto

Eseguire comandi con privilegi amministrativi senza autenticazione

In molti sistemi operativi basati su Linux, gli utenti avanzati possono utilizzare il file /etc/sudoers in modo da eseguire determinati comandi utilizzando sudo senza richiesta di autenticazione. KDE Linux non possiede né /etc/sudoers né sudo, come è possibile dunque fare la stessa cosa?

La risposta è configurare un servizio systemd che esegua il comando specificato, e poi una regola polkit che ti permetta di invocare il servizio di sistema senza il bisogno di autenticazione.

Servizio systemd

Ecco un esempio di servizio systemd che esegue /usr/bin/systemd-sysext refresh --always-refresh=yes per aggiornare le estensioni systemd:

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

[Unit]
Description=Refresh systemd extensions

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

Regola polkit

Ecco invece un esempio di regola polkit rule che permette ai membri attivi del gruppo wheel autenticati localmente di invocare quel servizio systemd senza autenticazione:

/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 isolare ulteriormente questa regola in modo che aggiri l'autenticazione soltanto per te, sostituisci «wheel» col tuo nome utente.

Utilizzo

Dopo aver creato entrambi i file, puoi aggiornare le estensioni systemd senza autenticazione invocando il servizio systemd: systemctl start sysext-refresh.

Può essere fatto lo stesso per qualsiasi altro comando; basta creare per essi gli appropriati servizi systemd e le regole polkit.

Ulteriori informazioni


Articolo scritto da sotto licenza CC-BY-4.0.