CentOS 6.4
Estoy tratando de comprender mejor cómo se procesan las reglas ACL del sistema de archivos y en qué orden se aplican las reglas ACL.
Por ejemplo, digamos que los usuarios bob y joe pertenecen a un grupo llamado ventas. Digamos también que tengo un documento de venta con los siguientes detalles:
[[email protected] ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---
Mi pregunta es, ¿cómo se procesan los permisos en un ejemplo como este y qué privilegios de acceso tienen prioridad?
¿Hay solo una búsqueda de arriba hacia abajo y cualquier regla que coincida primero es la que se aplica?
¿O Linux impone el acceso en función de cuál es la regla más específica para el usuario en cuestión? ¿O tal vez prevalece la regla más restrictiva y aplicable?
Respuesta aceptada:
Este es un tema un poco amplio y un poco demasiado para cubrir aquí. Lo remitiré a las Listas de control de acceso POSIX en el documento técnico de Linux elaborado por Andreas Grünbacher de SuSE Labs. Hace un buen trabajo cubriendo el tema y desglosándolo para que comprenda cómo funcionan las ACL.
Tu ejemplo
Ahora echemos un vistazo a tu ejemplo y analízalo.
- grupo (ventas)
- miembros del grupo de ventas (bob, joe)
Ahora analicemos los permisos en el archivo /home/foo/docs/foo.txt
. Las ACL también encapsulan los mismos permisos con los que la mayoría de la gente debería estar familiarizada en Unix, principalmente los bits de Usuario, Grupo y Otros. Así que saquemos esos primero.
user:: r--
group::r--
other::---
Por lo general, se verían así en un ls -l
:
$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt
Puede ver quién es el propietario del archivo y cuál es el grupo con estas líneas ACL:
# owner: jane
# group: executives
Así que ahora nos adentramos en el meollo de las ACL:
user:bob:rw-
user:joe:rwx
group:sales:rwx
Esto muestra que el usuario bob
tiene rw
, mientras que el usuario joe
tiene rwx
. También hay un grupo que también tiene rwx
parecido a jo. Estos permisos son como si la columna de usuario en nuestro ls -l
la salida tenía 3 propietarios (jane, bob y joe) así como 2 grupos (ejecutivos y ventas). No hay distinción aparte de que son ACL.
Por último, la mask
línea:
mask::rwx
En este caso no estamos enmascarando nada, está completamente abierto. Entonces, si los usuarios bob y joe tienen estas líneas:
user:bob:rw-
user:joe:rwx
Entonces esos son sus permisos efectivos. Si la máscara fuera así:
mask::r-x
Entonces sus permisos efectivos serían así:
user:bob:rw- # effective:r--
user:joe:rwx # effective:r-x
Este es un mecanismo poderoso para restringir los permisos que se otorgan de manera mayorista.
Relacionado:Debian:¿cómo rizar el contenido completo de la página web?
Referencias
- getfacl(1) – página man de Linux
- Listas de control de acceso POSIX en el documento técnico de Linux