2011-01-24 10 views
9

Stavo esaminando il mio manuale di sistema operativo e mi sono imbattuto nel concetto di "meccanismo e politica di separazione". Non ero sicuro di cosa significasse, quindi ho controllato wikipedia che, devo ammettere, non è stato di grande aiuto.politica e meccanismo

La separazione dei meccanismi e politica [1] è un principio di progettazione in informatica. Essa afferma che meccanismi (le parti di un sistema di di implementazione che controllano la l'autorizzazione delle operazioni e la allocazione delle risorse) non dovrebbero dettare (o eccessivamente restringere) i politiche in base al quale le decisioni sono fatti su cui le operazioni di autorizzare e quali risorse allocare a .

Qualcuno potrebbe attenuare questo in giù, e spiegare, se possibile, con alcuni esempi ciò separation of mechanism and policy significa nel contesto dei sistemi operativi?

risposta

12

Ecco cosa significa per il sistema X-Windows.

X-Windows, al livello di base, fornisce un modo di manipolare le aree dello schermo chiamate 'finestre'. Fornisce anche un modo per ricevere eventi che avvengono all'interno di Windows.

Ma X-Windows non dice nulla sulle barre del titolo, sui menu, sulle barre di scorrimento o su nessuna di quelle cose. Inoltre non dice nulla delle regole con cui un'applicazione particolare può rendere la sua finestra occupare l'intero schermo, o quando una finestra deve essere spostata dallo schermo. Fornisce un modo per un'applicazione per forzare altre applicazioni a chiedere il permesso prima di eseguire operazioni con le finestre di primo livello, ma non fornisce alcuna applicazione come parte del server di base.

X-Windows si basa sul meccanismo, non sulla politica.

La politica è fornita dal widget toolkit, dal window manager e da altre cose aggiunte successivamente al sistema. Molti toolkit widget, ad esempio, utilizzano una serie di sotto-finestre sovrapposte per le barre di scorrimento e chiedono eventi del mouse per queste sotto-finestre in modo che possano rilevare le operazioni di clic e trascinamento e far sì che le finestre secondarie rispondano in modo appropriato.

Ecco perché, ad esempio, GNOME e KDE possono andare d'accordo sullo stesso display, e perché i vecchi programmi X-Windows che non sanno nulla di pannelli o desktop funzionano ancora bene sui sistemi moderni.

+0

Sì, soprattutto dal momento che la politica originale era pass -geometry quando si avviavano tutte le applicazioni X (dalla riga di comando). – Joshua

4

Per quanto riguarda i sistemi operativi * nix, l'idea generale è che il sistema di sicurezza sia implementato dal kernel e che il sistema di autorizzazione sia implementato dallo userspace.

L'onnipotente binario radice e suid che tante persone deride (giuste o altrui) sono necessarie per separazioni efficaci. È possibile sostituire completamente il meccanismo di autenticazione lasciando intatta la sicurezza (ssh lo fa, motivo per cui utilizza API non documentate su Windows).

+0

+1 - Un altro eccellente esempio del principio. Unix ha in realtà un meccanismo quasi (ma non abbastanza) per consentire l'implementazione della sicurezza basata sulle capacità. Il descrittore di file che passa sui socket di dominio Unix è una cosa fondamentale che è una caratteristica molto importante per questo. Ma ha bisogno di più, come un modo per persino un processo utente per 'exec' e il processo risultante ha meno privilegi. – Omnifarious

+0

@Omnifarious: in realtà quell'ultima è facile. Eliminare i privilegi tra fork() ed exec(). Tuttavia, non esiste un equivalente di sandboxing di Vista. – Joshua

+0

Ma se sei un utente processo, come si eliminano i privilegi? Ad esempio, avere i privilegi di "nessuno" e nessuna autorizzazione per creare socket. E il sandboxing di Vista può essere implementato con il passaggio dei descrittori di file. – Omnifarious

Problemi correlati