Non c'è davvero una risposta corretta a questa domanda. È un compromesso tra sicurezza e usabilità.
run command with pkexec each time ( which I kind of want to avoid for the sake of user experience );
Se il pubblico previsto non ha "CLIphobia", sudo
potrebbe essere davvero fantastico qui se "ogni volta" è entro 15 minuti.
Ma da un punto di vista della sicurezza, raccomanderei pkexec. Presumo che possa essere considerato attendibile poiché viene preinstallato con la distro, a differenza di alcuni wrapper o demoni setuid rapidamente hackerati.
since the indicator is in python, I could have a binary with setuid bit set written in C. However, I've been told this approach is frowned upon;
L'unico problema di cui ho sentito parlare con setuid wrappers è che possono sovrascrivere se stessi con un trojan se sfruttato, ma questo non è rilevante per setuid-to- / root / binari come qualsiasi altro exploit su un processo in esecuzione come root significa che sei avvitato comunque.
L'unico problema che ho riscontrato non si applica a setuid-to- / root / binari, è stato così che non ho capito tutti gli ID utente unix e ho dimenticato di impostare l'utente reale ID, ID utente salvato e equivalenti ID gruppo, ciò significa che un programma che / drops / privilegi può ancora ottenerli indietro.
Potrebbero esserci altri motivi per cui i wrapper setuid sono disapprovati, ma non ne ho mai sentito parlare. Se nessun altro può trovare ragioni per cui i wrapper setuid sono disapprovati, un wrapper setuid sarà un'ottima scelta.
start a "proxy" which will run as root and only perform that one specific task , and the indicator will communicate with that "proxy"
Se crei un demone per eseguire l'operazione, tienilo il più semplice possibile e assicurati che gli utenti non autorizzati non riescano a comunicare con esso.
Posso pensare a due opzioni: (1) usare una password che un client autorizzato dovrebbe conoscere, il daemon lo sa e un client non autorizzato non lo sa. La password dovrebbe essere archiviata in un file chmoded 400 e di proprietà di root.
(2) usa le autorizzazioni unix sul socket per impedire a qualsiasi altro utente locale di provare anche a (ab) usare il demone.
link
L'opzione due può essere considerata meno sicura e più incoerente in UX. L'utente potrebbe non capire il motivo per cui non funzionerà quando è connesso come un altro utente, il che è veramente brutto quando accade.