Ho un'applicazione GUI che deve chiamare un demone (scritto in Python) con privilegi di superutente. Vorrei farlo senza richiedere all'utente una password.
Poiché il demone è uno script, non posso impostare direttamente il bit SUID. Potrei scrivere un wrapper C per questo, ma preferirei non reinventare la ruota, soprattutto quando un mio errore potrebbe compromettere gravemente la sicurezza del sistema.
Quello che normalmente farei in questa situazione è aggiungere una riga in /etc/sudoers
che consente agli utenti di eseguire il demone come root senza password, utilizzando la direttiva NOPASSWD. Funziona bene dalla riga di comando. Tuttavia, quando lo faccio dalla GUI, un pkexec
viene visualizzata la finestra di dialogo che richiede la password dell'utente. Sembra che su Ubuntu chiami sudo
dalla GUI vengono in qualche modo intercettati da pkexec
.
C'è un modo pulito per aggirare questo? Preferirei davvero non dover affrontare le seccature di una sceneggiatura setuida.
Migliore risposta
È improprio dire che:"Sembra che su Ubuntu chiami a sudo
dalla GUI vengono in qualche modo intercettati da pkexec
“ . pkexec
non ha molto in comune con sudo
. In contrasto con sudo
, pkexec
non concede l'autorizzazione di root a un intero processo, ma consente piuttosto un livello più fine di controllo della politica del sistema centralizzato.
Ora, se vuoi eseguire un'applicazione GUI senza che ti venga richiesta una password da pkexec
, questo non è difficile da fare. Prendiamo ad esempio GParted . Quando lo apri, vedrai la seguente finestra di dialogo che ti chiede una password:
Fai clic su Dettagli e la finestra di dialogo sarà ora simile a:
Da qui tutto ciò che devi fare è aprire /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy
file utilizzando ad esempio il seguente comando:
gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy
e modifica le seguenti righe:
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
con i seguenti:
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
Salva il file e chiudilo. Successivamente, quando aprirai GParted non ti verrà più chiesta una password.
Correlati:è possibile con Gedit o la riga di comando modificare ogni quarta riga di un file di testo?