¿Cómo se procesan los permisos de ACL y en qué orden se aplican a una determinada acción del usuario?

21

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, supongamos que los usuarios bob y joe pertenecen a un grupo llamado ventas. Digamos también que tengo un documento de ventas con los siguientes detalles:

[root@Maui ~]# 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 la regla más restrictiva y aplicable tiene prioridad?

Mike B
fuente

Respuestas:

15

Este es un tema bastante 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 muy buen trabajo al cubrir el tema y desglosarlo para que entienda cómo funcionan las ACL.

Su ejemplo

Ahora echemos un vistazo a su ejemplo y desglosemos.

  • 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 las personas deberían estar familiarizadas en Unix, principalmente el usuario, el grupo y otros bits. Así que saquemos esos primero.

user:: r--
group::r--
other::---

Estos normalmente 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 posee el archivo y qué grupo es con estas líneas de 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 bobtiene rw, mientras que el usuario joetiene rwx. También hay un grupo que también tiene rwxsimilar a Joe. Estos permisos son como si la columna de usuarios en nuestro ls -lresultado tuviera 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 masklínea:

mask::rwx

En este caso no estamos ocultando nada, está abierto de par en par. 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 poderoso mecanismo para restringir los permisos que se otorgan de manera general.

NOTA: El propietario del archivo y otros permisos no se ven afectados por la máscara de derechos efectiva; todas las otras entradas son! Entonces, con respecto a la máscara, los permisos de ACL son ciudadanos de segunda clase en comparación con los permisos tradicionales de Unix.

Referencias

slm
fuente