Spesso mi confondo se un particolare meccanismo di protezione è ACL o CL per definizione. Ad esempio per chiarire questo, vorrei prendere in considerazione il caso di Linux.
Credo che Linux utilizzi capability lists
per impedire agli utenti non root di accedere a tutto. La mia spiegazione sarebbe la seguente:
-
Un
subject
nel sistema Linux è unuser
: dopo aver effettuato l'accesso con il tuo nome utente e password, diventi un soggetto particolare del CL. L'oggetto è identificato dal suo user-id o da uno dei group-id a cui appartiene l'utente. Questi ID vengono assegnati all'utente dopo la verifica dell'accesso. -
Un elenco di capacità per questo particolare argomento è distribuito su tutto il file system. Ogni file nel file system ha un flag a 9 bit del modulo read / write / execute per UID, GID e altri (+ flag extra SETUID che ignorerò per ora). Questo flag a 9 bit corrisponde a
one capability entry
nell'elenco delle capacità. -
Quando un soggetto (utente) desidera operare (ad esempio leggere) su un oggetto (file), il sistema funziona come segue:
- Controlla se l'id-utente corrisponde al file UID. Se no, vai alla parte 2, altrimenti controlla se il flag di lettura del file UID è alto. Se sì, consentire all'utente di leggere un file, altrimenti no.
- Verifica se uno degli ID di gruppo utente corrisponde al GID del file. Se viene trovata una corrispondenza, procedere analogamente alla parte 1, altrimenti andare alla parte 3.
- Caso in cui l'utente corrente appartiene alla classe
others
. Controlla se il flag di lettura degli altri è alto. Se sì, consentire all'utente di leggere un file, altrimenti no.
Questa spiegazione del sistema di protezione di Linux è corretta? Se no, cosa c'è di sbagliato in tale spiegazione?