Domanda

( Questa domanda è identico titolo, ma il corpo questione si chiede in punto di script di vista, ad esempio su -c, non ingannare questo a quello)

Ho un'applicazione Qt GUI che deve eseguire alcune operazioni sui file in / etc in base all'input dell'utente. Una possibilità sarebbe probabilmente da utilizzare system() con sudo, ma anche questo richiede pasticciano con il file sudoers a un certo punto. Mi piacerebbe anche non fare system() più di script hack per modificare i file, ma le operazioni di file corretto.

Qual è il modo migliore per elevare il livello di codice i miei diritti di applicazioni per fare questo?

Edit: come bonus, sarebbe bello se avrebbe funzionato su Maemo / Meego / altri palmari anche (per quanto ne so PolicyKit non è disponibile lì ..)

È stato utile?

Soluzione

Vorrei scrivere un programma separato del tutto. Qualcosa sulla falsariga di questo filosofia . In sostanza - scrivere un semplice programma che fa esattamente quello che ti serve, e controllare il suo comportamento con i permessi dei file sul filesystem. Principalmente,

  

Do il meno possibile nei programmi setuid .

     

Un programma setuid deve operare in un   ambiente molto pericoloso: un utente è   sotto il controllo completo dei suoi fds,   args, environ, CWD, TTY, rlimits,   temporizzatori, segnali, e altro ancora. Persino peggio,   l'elenco dei prodotti controllati varia   da UNIX di un fornitore a quello successivo, in modo da   è molto difficile da scrivere portatile   codice che pulisce tutto.

     

dei venti sendmail più recente   buchi di sicurezza, undici hanno lavorato solo   perché l'intero sistema sendmail è   setuid.

     

Un solo programma qmail è setuid:   qmail-coda. Il suo unico scopo è quello di   aggiungere un nuovo messaggio di posta elettronica per l'uscente   coda.

E,

  

Do il meno possibile come root .

     

L'intero sistema sendmail viene eseguito come   radice, quindi non c'è modo che la sua   gli errori possono essere catturati dal   il sistema operativo del built-in   protezioni. Al contrario, solo due   programmi qmail, qmail-start e   qmail-lspawn, eseguito come root.

Altri suggerimenti

Si potrebbe utilizzare PolicyKit, che sta gradualmente sostituendo gksu / su / sudo, in particolare su Ubuntu, per la sua sicurezza e la grana fine più alto controllo a causa di elevare azioni , non l'intero programma.

Crea un aiutante setuid programma che fa solo le cose che vuoi fare, e < a href = "http://en.wikipedia.org/wiki/Fork-exec" rel = "nofollow noreferrer"> fork / exec l'applicazione da esso. Poi cadere i privilegi nel processo figlio. Entrambe le applicazioni possono comunicare sulla Bocchetta, o qualcosa di simile.

avere in mente che i programmi setuid sono un rischio per la sicurezza e così si dovrebbe essere molto attenti in sede di attuazione uno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top