La sezione del programma richiede l'accesso come root

1

Devo eseguire una serie di attività di "manutenzione" che richiedono l'accesso root (Linux, Debian). Generalmente solo una volta, ma devo verificare che siano stati eseguiti.

In realtà non voglio eseguire l'intero programma come root. C'è un buon modello per eseguire queste attività senza avere l'intero programma come root?

Le attività sono fisse e non hanno input dall'esterno del sistema (non sono necessari input utente). Alcune attività note comprendono la modifica del nome host e la formattazione di una scheda SD.

    
posta tl8 07.07.2017 - 03:50
fonte

1 risposta

1

La risposta è separazione dei privilegi , come usato in SSH e numerosi altri daemon di rete. L'idea è che batti un secondo processo. Uno dei processi elimina i privilegi di root. C'è una pipa tra questi processi. Il processo privilegiato attende l'input dalla pipe, esegue l'operazione e restituisce il risultato utilizzando la pipe. (Nota: in alcuni sistemi operativi, le pipe potrebbero non essere bidirezionali, quindi la coppia di socket potrebbe essere una soluzione migliore, cioè più portabile.)

Il codice privilegiato deve essere implementato con molta attenzione in modo da essere certi che non ci siano vulnerabilità nello stacking. Ovviamente, il codice privilegiato non può accettare richieste di eseguire comandi arbitrari, altrimenti si perdono i vantaggi della separazione dei privilegi. Quindi, in altre parole: il codice privilegiato deve verificare tutto nella richiesta per eseguire un'attività privilegiata.

    
risposta data 07.07.2017 - 11:53
fonte

Leggi altre domande sui tag