La soluzione più semplice che ho trovato dopo altri giorni di ricerca, è di modificare il file sudoers, abilitando i permessi per shutdown (prendo sempre questo commando come esempio, ma controllando nella cartella /sbin/ si trovano altri commandi).
Per fare questo si digita sudo visudo nel terminale del proprio OS
una volta dentro si va fino a
codice:
Cmnd alias specification
Qui si aggiunge
codice:
Cmnd_Alias NOME_DA_RICHIAMARE_DOPO1= percorso_file
Nel caso di shutdown ad esempio:
codice:
Cmnd_Alias SPEGNIMENTO= /sbin/shutdown
A questo punto si va sotto
codice:
User alias specification
E si aggiunge:
codice:
User_alias NOME_DA_RICHIAMARE_DOPO2=nome_utente
Nel mio caso:
codice:
Usera_alias ME=Icosac
Infine per togliere la password andiamo sotto
codice:
User privilege specification
E aggiungiamo:
codice:
NOME_DA_RICHIAMARE_DOPO2 ALL=NOPASSWD: NOME_DA_RICHIAMARE_DOPO1
Dove NOME_DA_RICHIAMARE_DOPO2 è il secondo che abbiamo inserito quindi relativo all'utente e NOME_DA_RICHIAMARE_DOPO1 è quello per il comando. Sempre nel mio caso:
codice:
ME ALL=NOPASSWD: SPEGNIMENTO
Così facendo, digitando il comando:
codice:
sudo shutdown -h now
il computer non vi chiederà più la password di root, ma farà da solo. Logicamente inserendo questo in system() funzionerà:
codice:
system(shutdown -h now)
Mi raccomando dove ho messo maiuscolo, la parola va maiuscola!
Per uscire dal file:
- Se siete su OS X premere esc e quindi :wq (salva ed esci) :q (esci soltanto)
- Se siete su Linux, c'è messo in basso comunque ^x (ctrl x) se non sbaglio
Tre cose ancora:
1. Si può togliere la password di root per qualsiasi comando che ne abbia bisogno. Per fare questo andiamo sotto
codice:
User privilege specification
e cambiamo da
codice:
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
con:
codice:
root ALL=NOPASSWD: ALL
%admin ALL=NOPASSWD: ALL
Non so però quanto sicura sia una cosa del genere, in quanto tutti possono a quel punto accedervi.
2. Non ne sono sicuro perchè non ho controllato/non ne sono a conoscenza, ma potrebbe esserci un'altra/altre cartella/e dove sono contenuti altri comandi, quindi non solo /sbin, cercate
3. Vi rimando al link che mi ha aiutato: https://ubuntrucchi.wordpress.com/2008/03/25/eseguire-un-programma-come-root-senza-la-richiesta-di-password/