È buona norma che tutti i programmi abbiano il proprio ID utente? [chiuso]

3

In genere, ogni utente fisico su un sistema ha un ID e un processo in esecuzione viene eseguito come l'utente che lo avvia. Ciò significa che il processo è in grado di accedere a tutti i file dell'utente, anche a quelli non destinati a questo specifico programma. Ad esempio, se inizi a eseguire Firefox, questo ha accesso ai file di configurazione di Chrome e viceversa. Ma come puoi vedere questo è irrazionale perché qualsiasi browser funziona correttamente senza accedere ai file di configurazione di un altro.

Questo è anche pericoloso se si considera che un programma dannoso avviato dall'utente è sufficiente per modificare furtivamente tutti i file dell'utente, oltre a inviare e-mail ad altre persone come utente, accedere agli account Web se l'utente memorizza un cookie e molti altri possibili comportamenti indesiderati. La causa principale è che il processo è in esecuzione come utente, non come se stesso.

Il problema è stato parzialmente risolto nei sistemi Linux di commodity specificando UID e GID all'avvio di un processo. Mentre questo è vero per molti demoni di sistema, non è il caso tipico dei software client. Molte utilità come brower, client FTP, editor di testo vengono eseguite come utente ma non come il proprio UID.

Il sistema operativo che cerca una soluzione a livello di sistema operativo è Android, in cui ogni app ha il proprio ID e accede ai dati dell'utente tramite autorizzazioni. Aggiunge una certa complessità ma impedisce molte possibilità di attacco. Se ciò è considerato una buona pratica, allora perché questa funzione non viene trasferita su Linux desktop (o ce l'ha)? Con una distribuzione più ampia di systemd , gli utenti ora dispongono di un controllo molto migliore dei processi corrono e non ci dovrebbero essere difficoltà tecniche nell'implementazione di tale funzione.

    
posta Cyker 14.12.2016 - 08:21
fonte

1 risposta

4

La domanda ribalta il problema. L'isolamento del sottosistema esiste a lungo nel sistema operativo del server tramite UID specifici. Puoi persino fare un ulteriore passo avanti con macchine virtuali o jail nei sistemi BSD.

Per la parte dei programmi client, il modo operativo desktop è quello di dividere il programma in due parti, un'interfaccia umana che viene eseguita con l'id utilizzato e un demone (o servizio nel mondo Windows) che può essere eseguito con il proprio ID ( pensa a database come PostgreSQL ad esempio).

Quindi la sicurezza è nelle mani dell'amministratore di sistema che può scegliere un modello di sicurezza adatto alla sensibilità dell'appliazione / dati.

Ma in Android, non hai accesso a un account amministrativo, quindi l'utente finale non può configurare alcun modello di sicurezza. Quindi la soluzione era dichiarare un id utente dal fornitore dell'applicazione (nota per venditore e non per applicazione!) Al fine di limitare i danni causati da un'applicazione alle applicazioni dello stesso sviluppatore.

Al contrario, fino alle versioni Android più recenti, l'utente finale non poteva scegliere di limitare l'accesso a un'applicazione: se lo sviluppatore sceglieva di chiedere l'accesso alla directory dei contatti, l'utente non poteva fare nulla contro di essa se non non installazione dell'applicazione.

Quindi la mia risposta è che un ID utente per applicazione non ha alcun significato da aggiungere ai normali SO perché è già presente da molto tempo (a condizione che gli sviluppatori lo facciano). Ma forse il sistema Android aggiungerà funzionalità per consentire all'utente finale di controllare più finemente ciò che le applicazioni sono autorizzate a fare

    
risposta data 14.12.2016 - 11:52
fonte

Leggi altre domande sui tag