A menudo me confundo si un mecanismo de protección particular es ACL o CL por definición. Como ejemplo para aclarar esto, me gustaría considerar el caso de Linux.
Creo que Linux usa capability lists
para restringir el acceso de usuarios no root a todo. Mi explicación sería la siguiente:
-
Un
subject
en el sistema Linux es unuser
: después de iniciar sesión con su nombre de usuario y contraseña, se convierte en un tema particular del CL. El sujeto se identifica por su ID de usuario o por uno de los ID de grupo al que pertenece el usuario. Estos identificadores se asignan al usuario después de que se verifique el inicio de sesión. -
Una lista de capacidades para este tema en particular se extiende por todo el sistema de archivos. Cada archivo en el sistema de archivos tiene un indicador de 9 bits del formulario de lectura / escritura / ejecución para UID, GID y otros (+ indicador SETUID adicional que ignoraré por ahora). Este indicador de 9 bits corresponde a
one capability entry
en la lista de capacidades. -
Cuando un sujeto (usuario) desea operar (por ejemplo, leer) en un objeto (archivo), el sistema funciona de la siguiente manera:
- Compruebe si el ID de usuario coincide con el UID del archivo. Si no, vaya a la parte 2, o compruebe si el indicador de lectura del UID del archivo es alto. Si es así, permita que el usuario lea un archivo, de lo contrario no.
- Compruebe si una de las ID de grupo de usuario coincide con el archivo GID. Si encuentra alguna coincidencia, proceda de manera análoga a la parte 1, o vaya a la parte 3.
- Caso cuando el usuario actual pertenece a la clase
others
. Compruebe si leer bandera de otros es alta. Si es así, permita que el usuario lea un archivo, de lo contrario no.
¿Es correcta esta explicación del sistema de protección de Linux? Si no, ¿qué hay de malo en esa explicación?