ACL
Per suggerire un sistema di permessi piuttosto versatile da aggiungere in MRBS, ho finito per creare questa classe.
Una capability è un termine eventualmente associato ad un livello. Possedere una capability è, grossomodo, come appartenere ad un gruppo (con in più la possibilità di avere anche un livello all'interno del gruppo).
Una ACL (Access Control List, Lista di controllo accessi) è un insieme di capability.
L'accesso viene consentito solo se l'utente ha tutte le capability contenute nell'ACL ed il livello che si ha per ogni capability è maggiore o uguale a quello della corrispondente capability richiesta dall'ACL. Inoltre, un'ACL può specificare che l'utente non debba possedere una determinata capability, indipendentemente dal livello (attualmente il livello indicato per una capability negativa viene ignorato visto che non ho potuto definire una semantica sensata per utilizzarlo).
L'uso è molto semplice e vari casi sono esposti nell'esempio. È comunque fondamentale ricordarsi che le capability possono contenere solo lettere (da 'a' a 'z', sia maiuscole che minuscole), cifre (da '0' a '9') ed il segno di underscore ('_'). Ogni altro carattere farà ignorare la capability. Inoltre la creazione di un'ACL non soddisfabile (ovvero che ha una capability sia positiva che negativa) provoca un warning nel file di log e la creazione di un'ACL che permette sempre l'accesso (lo so, è pericoloso ma l'alternativa era il lock-out in caso di errore)!
La licenza usata è la BSD.
Allegato | Dimensione |
---|---|
ACL.tar_.bz2 | 3.38 KB |