Cómo las máscaras ACL le permiten optimizar los permisos de archivos en Linux

Puntos clave

  • Las máscaras de la Lista de control de acceso (ACL) brindan compatibilidad con programas que no pueden comprender las ACL al traducir las entradas de ACL en permisos POSIX.
  • Las máscaras ACL representan los permisos máximos permitidos para cualquier usuario u objeto de grupo que no sea el usuario, grupo u "otra" clase propietaria.
  • A medida que agrega nuevas entradas de ACL, el formulario se ajusta automáticamente para reflejar los permisos máximos permitidos para todos los usuarios o grupos nombrados.

¿Utiliza listas de control de acceso (ACL) pero está confundido acerca del concepto de máscaras? Usted no está solo. Profundicemos en este importante concepto echando un vistazo a qué son y cómo interactúan con los permisos del sistema de archivos de Linux.

→ Índice de contenidos
  • ¿Qué son las máscaras de LCA?
  • Permisos efectivos
  • Máscaras predeterminadas
  • ¿Qué son las máscaras de LCA?

    Las máscaras de ACL son una forma de garantizar la interoperabilidad de los permisos con programas y utilidades que no comprenden las ACL.

    Una máscara ACL en un archivo o directorio equivale a los permisos máximos permitidos a cualquier usuario u objeto de grupo que no sea el usuario, grupo u "otra" clase propietaria del paradigma de usuario/grupo/otra clase. Para decirlo de otra manera, traduce las entradas de ACL en permisos POSIX por razones de compatibilidad con versiones anteriores.

    Echemos un vistazo al archivo recién creado con el que trabajaremos en este artículo, mysupersecretfile.txt:

     ls -l mysupersecretfile.txt 

    Permisos bastante simples para un documento tan sensible, ¿verdad?

    Observe el punto (.) después de los permisos que estableció. Esto indica un contexto SELinux, que no está relacionado con las ACL ni con las máscaras de ACL.

    Para mayor claridad, examinemos también las entradas ACL del archivo, usando el comando getfacl:

     getfacl mysupersecretfile.txt 

    Una ventana de terminal que muestra el comando getfacl y su salida, con permisos ACL mínimos.

    Las entradas de ACL actuales para las entradas de propiedad de usuario y grupo se asignan directamente al usuario POSIX real y a la propiedad de grupo del archivo. Esto es normal para cualquier archivo que no tenga entradas ACL extendidas y se denomina "ACL mínima".

    Supongamos que recibimos una solicitud para agregar un usuario llamado administrador como entrada ACL a este archivo, con permisos de lectura. Esto lo lograremos con el comando setfacl. Entonces, examinemos los nuevos permisos de ACL usando los comandos ls y getfacl:

     setfacl -m u:manager:r mysupersecretfile.txt
    ls -l mysupersecretfile.txt
    getfacl mysupersecretfile.txt

    Una ventana de terminal que muestra el comando setfacl para agregar una entrada de ACL de usuario, el comando ls -l, el comando getfacl y sus resultados que reflejan los nuevos permisos.

    Ahora notará el signo "+" junto a las entradas de permisos en el comando ls, lo que indica que hay entradas ACL asociadas con el archivo.

    Ver el mascarilla línea en la salida del comando getfacl ahora? Además de la entrada ACL extendida del usuario administrador, esta entrada del formulario se asignó automáticamente. Esto es necesario; representa los permisos máximos permitidos para cualquier usuario designado u objeto de grupo (nuevamente, además del usuario propietario y los objetos de grupo propietarios). En este momento, el permiso de lectura equivale al permiso de lectura del formulario existente.

    Ahora agreguemos otro usuario de una segunda solicitud, contratista, a la ACL de nuestro archivo. Esta vez, sin embargo, debemos otorgarles permisos de lectura y escritura. Veamos cómo afecta esto a la mascarilla:

     setfacl -m u:contractor:rw mysupersecretfile.txt
    getfacl mysupersecretfile.txt

    Una ventana de terminal que muestra el comando setfacl para agregar el usuario contratista con permisos de lectura y escritura y el comando getfacl y su salida, específicamente los permisos de formulario modificados.

    Ahora, además de la entrada ACL del administrador (r), también vemos la entrada del contratista (rw). Pero ¿por qué la voz de la máscara cambió a lectura y escritura?

    Cuando agregamos el usuario contratista con permisos de lectura y escritura, esto afectó la máscara de ACL porque, como se mencionó anteriormente, la máscara se refiere a los permisos máximos permitidos de los usuarios de ACL y las entradas de grupo. Dado que agregamos permisos de escritura a la entrada ACL del usuario contratista, la plantilla también obtiene permiso de escritura.

    Cuando trabaje con ACL, verá que la función de los permisos de clase de grupo (como ocurre con el resultado del ls-l comando) se reutiliza para reflejar la máscara ACL. Sin embargo, no se preocupe, los permisos del propietario del grupo aún se reflejan en la entrada ACL "grupo propietario".

    Tenga en cuenta que si agrega otro usuario con menos permisos, como solo lectura, no heredará los permisos del formulario, del mismo modo que el usuario administrador no obtuvo permiso de escritura cuando agregamos la entrada ACL del usuario contratista.

    Permisos efectivos

    Podemos configurar manualmente los permisos de entrada de la máscara usando el comando setfacl. Esto nos permitirá filtrar simultáneamente todos los permisos de usuario y/o grupo establecidos en el archivo, o las entradas ACL de los usuarios existentes del archivo, hasta el mínimo común denominador. Esto se llama permisos efectivos.

    Configuremos nuestra máscara de archivo en solo lectura y luego echemos un vistazo a las entradas de ACL:

     setfacl -m m::r mysupersecretfile.txt
    getfacl mysupersecretfile.txt

    Una ventana de terminal que muestra el comando setfacl, cambiando el formulario y el comando getfacl que muestra los permisos reales.

    El comentario que muestra los permisos reales del usuario contratista nos permite saber que, aunque se le otorgaron permisos de lectura y escritura, en realidad solo tiene permiso de lectura. Cambiar la máscara causó esto. Si volvemos a mirar el archivo con ls-lveremos que los permisos de la clase grupal (que una vez más se reutiliza para reflejar la máscara) han cambiado:

     ls -l mysupersecretfile.txt 

    Una ventana de terminal que muestra el comando ls y su salida con los nuevos permisos de clase de grupo.

    Si desea agregar una entrada de ACL de grupo o usuario designado, pero no desea volver a calcular la máscara, puede usar -NORTE junto con setfacl. Esto limitará la ACL que está agregando a los permisos máximos permitidos por el formulario (que se muestran en los permisos reales de la entrada). Sin embargo, este no es el valor predeterminado; Tenga en cuenta que la máscara no es una forma de control de acceso obligatorio. Probémoslo a continuación:

     setfacl -n -m u:milton:rwx mysupersecretfile.txt
    getfacl mysupersecretfile.txt

    Una ventana de terminal que muestra el comando setfacl, que agrega permisos rwx para el usuario milton, y el comando getfacl que muestra los permisos reales de r, gracias al uso del parámetro -n.

    Máscaras predeterminadas

    Cuando se trabaja con ACL, el concepto de máscaras predeterminadas es muy similar al de las entradas de ACL predeterminadas. Por ejemplo, cuando agrega una plantilla predeterminada a un directorio, todos los archivos y subdirectorios recién creados dentro de él heredarán la misma plantilla (así como la entrada de la plantilla predeterminada). Sólo usa el -D parámetro con el comando setfacl para aplicar una máscara predeterminada:

     mkdir mysupersecretdirectory
    setfacl -d -m m::rX mysupersecretdirectory/
    getfacl mysupersecretdirectory/
    mkdir mysupersecretdirectory/mysupersecretsubdirectory/
    getfacl mysupersecretdirectory/mysupersecretsubdirectory/

    Una ventana de terminal que muestra los comandos mkdir, setfacl y getfacl para reflejar una asignación de máscara predeterminada

    Las máscaras predeterminadas y las entradas ACL predeterminadas solo se aplican a los directorios, ya que son los únicos objetos que pueden contener archivos y/u otros directorios dentro de ellos a los que se pueden aplicar estas entradas heredables.

    Las máscaras de ACL son una forma de garantizar que la seguridad de las ACL se maneje correctamente, independientemente de las capacidades del programa que las esté manipulando.

    A medida que la tecnología, el software y los conceptos de seguridad continúan evolucionando rápidamente, es importante recordar que la compatibilidad con versiones anteriores es fundamental para muchos de nosotros y debe respetarse junto con los nuevos avances. Por supuesto, eso no significa que no se puedan tener nuevas características, sólo significa que estas nuevas características deben cumplir con los estándares existentes.

    Subir Change privacy settings