Manuales para la línea de comandos

Man » Manual de acl en línea: documentación detallada en línea para la página de manual de acl

🌍
acl — Listas de control de acceso

DESCRIPCIÓN

Esta página de manual describe las Listas de Control de Acceso (ACL) POSIX, que se utilizan para definir derechos de acceso discrecional más precisos para archivos y directorios.

TIPOS DE ACL

Cada objeto puede considerarse que tiene asociada una ACL que gobierna el acceso discrecional a ese objeto; esta ACL se denomina ACL de acceso. Además, un directorio puede tener asociada una ACL que gobierna la ACL de acceso inicial para los objetos creados dentro de ese directorio; esta ACL se denomina ACL predeterminada.

ENTRADAS DE ACL

Una ACL consta de un conjunto de entradas de ACL. Una entrada de ACL especifica los permisos de acceso en el objeto asociado para un usuario individual o un grupo de usuarios como una combinación de permisos de lectura, escritura y búsqueda/ejecución.

Una entrada de ACL contiene una etiqueta de tipo de entrada, un calificador de etiqueta de entrada opcional y un conjunto de permisos. Utilizamos el término calificador para denotar el calificador de etiqueta de entrada de una entrada de ACL.

El calificador denota el identificador de un usuario o un grupo, para las entradas con tipos de etiqueta ACL_USER o ACL_GROUP, respectivamente. Las entradas con tipos de etiqueta distintos de ACL_USER o ACL_GROUP no tienen calificadores definidos.

Se definen los siguientes tipos de etiqueta de entrada:

ACL_USER_OBJ    La entrada ACL_USER_OBJ denota los derechos de acceso para el propietario del archivo.

ACL_USER        Las entradas ACL_USER denotan los derechos de acceso para los usuarios identificados por el calificador de la entrada.

ACL_GROUP_OBJ   La entrada ACL_GROUP_OBJ denota los derechos de acceso para el grupo del archivo.

ACL_GROUP       Las entradas ACL_GROUP denotan los derechos de acceso para los grupos identificados por el calificador de la entrada.

ACL_MASK        La entrada ACL_MASK denota los derechos de acceso máximos que pueden ser otorgados por las entradas de tipo ACL_USER, ACL_GROUP_OBJ o ACL_GROUP.

ACL_OTHER       La entrada ACL_OTHER denota los derechos de acceso para los procesos que no coinciden con ninguna otra entrada en la ACL.

Cuando se realiza una comprobación de acceso, las entradas ACL_USER_OBJ y ACL_USER se prueban en relación con el ID de usuario efectivo. El ID de grupo efectivo, así como todos los ID de grupo complementarios, se prueban en relación con las entradas ACL_GROUP_OBJ y ACL_GROUP.

ACL VÁLIDAS

Una ACL válida contiene exactamente una entrada con cada uno de los tipos de etiqueta ACL_USER_OBJ, ACL_GROUP_OBJ y ACL_OTHER. Las entradas con las etiquetas de tipo ACL_USER y ACL_GROUP pueden aparecer cero o más veces en una ACL. Una ACL que contiene entradas de los tipos de etiqueta ACL_USER o ACL_GROUP debe contener exactamente una entrada del tipo de etiqueta ACL_MASK. Si una ACL no contiene entradas de los tipos de etiqueta ACL_USER o ACL_GROUP, la entrada ACL_MASK es opcional.


Todos los calificadores de ID de usuario deben ser únicos entre todas las entradas del tipo de etiqueta ACL_USER, y todos los ID de grupo deben ser únicos entre todas las entradas del tipo de etiqueta ACL_GROUP.

La función acl_get_file() devuelve una ACL con cero entradas de ACL como la ACL predeterminada de un directorio, si el directorio no está asociado con una ACL predeterminada. La función acl_set_file() también acepta una ACL con cero entradas de ACL como una ACL predeterminada válida para directorios, lo que indica que el directorio no debe asociarse con una ACL predeterminada. Esto es equivalente a usar la función acl_delete_def_file().

CORRESPONDENCIA ENTRE LAS ENTRADAS DE ACL Y LOS BITS DE PERMISO DE ARCHIVO

Los permisos definidos por las ACL son un superconjunto de los permisos especificados por los bits de permiso de archivo.

Existe una correspondencia entre los permisos del propietario, el grupo y otros, y entradas específicas de ACL: los permisos del propietario corresponden a los permisos de la entrada ACL_USER_OBJ. Si la ACL tiene una entrada ACL_MASK, los permisos del grupo corresponden a los permisos de la entrada ACL_MASK. De lo contrario, si la ACL no tiene una entrada ACL_MASK, los permisos del grupo corresponden a los permisos de la entrada ACL_GROUP_OBJ. Los permisos de otros corresponden a los permisos de la entrada ACL_OTHER.

Los permisos del propietario, el grupo y otros siempre coinciden con los permisos de la entrada de ACL correspondiente. La modificación de los bits de permiso de archivo da como resultado la modificación de las entradas de ACL asociadas, y la modificación de estas entradas de ACL da como resultado la modificación de los bits de permiso de archivo.

CREACIÓN DE OBJETOS Y ACLS PREDETERMINADAS

La ACL de acceso de un objeto de archivo se inicializa cuando el objeto se crea con cualquiera de las funciones creat(), mkdir(), mknod(), mkfifo() o open(). Si una ACL predeterminada está asociada con un directorio, el parámetro mode de las funciones que crean objetos de archivo y la ACL predeterminada del directorio se utilizan para determinar la ACL del nuevo objeto:

El nuevo objeto hereda la ACL predeterminada del directorio que lo contiene como su ACL de acceso.

Las entradas de ACL de acceso correspondientes a los bits de permiso de archivo se modifican de modo que no contengan permisos que no estén contenidos en los permisos especificados por el parámetro `mode`.

Si no hay una ACL predeterminada asociada con un directorio, el parámetro mode de las funciones que crean objetos de archivo y la máscara de creación de archivos (consulte umask(2)) se utilizan para determinar la ACL del nuevo objeto:

El nuevo objeto se asigna una ACL de acceso que contiene entradas de los tipos de etiqueta `ACL_USER_OBJ`, `ACL_GROUP_OBJ` y `ACL_OTHER`. Los permisos de estas entradas se establecen en los permisos especificados por la máscara de creación de archivos.

Las entradas de ACL de acceso correspondientes a los bits de permiso de archivo se modifican de modo que no contengan permisos que no estén contenidos en los permisos especificados por el parámetro `mode`.

ALGORITMO DE VERIFICACIÓN DE ACCESO

Un proceso puede solicitar acceso de lectura, escritura o ejecución/búsqueda a un objeto de archivo protegido por una ACL. El algoritmo de verificación de acceso determina si se concederá el acceso al objeto.


      Si el ID de usuario efectivo del proceso coincide con el ID de usuario del propietario del objeto de archivo, entonces

si la entrada ACL_USER_OBJ contiene los permisos solicitados, se concede el acceso,

de lo contrario, se deniega el acceso.

de lo contrario, si el ID de usuario efectivo del proceso coincide con el calificador de cualquier entrada de tipo
ACL_USER, entonces

si la entrada ACL_USER coincidente y la entrada ACL_MASK contienen los permisos solicitados, se concede el acceso,

de lo contrario, se deniega el acceso.

de lo contrario, si el ID de grupo efectivo o cualquiera de los ID de grupo complementarios del proceso coinciden
con el grupo del archivo o el calificador de cualquier entrada de tipo ACL_GROUP, entonces

si la ACL contiene una entrada ACL_MASK, entonces

si la entrada ACL_MASK y cualquiera de las entradas ACL_GROUP_OBJ o ACL_GROUP coincidentes
contienen los permisos solicitados, se concede el acceso,

de lo contrario, se deniega el acceso.

de lo contrario (tenga en cuenta que no puede haber entradas ACL_GROUP sin una entrada ACL_MASK)

si la entrada ACL_GROUP_OBJ contiene los permisos solicitados, se concede el acceso,

de lo contrario, se deniega el acceso.

de lo contrario, si la entrada ACL_OTHER contiene los permisos solicitados, se concede el acceso.

de lo contrario, se deniega el acceso.

FORMAS DE TEXTO DE ACL

Se define una forma de texto larga y una forma de texto corta para representar las ACL. En ambas formas, las entradas de ACL se
representan como tres campos separados por dos puntos: una etiqueta de tipo de entrada de ACL, un calificador de entrada de ACL y
los permisos de acceso discrecionales. El primer campo contiene una de las siguientes palabras clave de etiqueta de tipo de entrada:

user    Una entrada de ACL de usuario especifica el acceso otorgado al propietario del archivo (etiqueta de tipo de entrada
ACL_USER_OBJ) o a un usuario especificado (etiqueta de tipo de entrada ACL_USER).

group   Una entrada de ACL de grupo especifica el acceso otorgado al grupo del archivo (etiqueta de tipo de entrada
ACL_GROUP_OBJ) o a un grupo especificado (etiqueta de tipo de entrada ACL_GROUP).

mask    Una entrada de máscara de ACL especifica el acceso máximo que se puede otorgar mediante cualquier entrada de ACL
excepto la entrada de usuario para el propietario del archivo y la entrada "otro" (etiqueta de tipo de entrada
ACL_MASK).

other   Una entrada "otro" de ACL especifica el acceso otorgado a cualquier proceso que no coincida
con ninguna entrada de ACL de usuario o grupo (etiqueta de tipo de entrada ACL_OTHER).

El segundo campo contiene el identificador de usuario o grupo del usuario o grupo asociado con la entrada de ACL para las entradas de etiqueta de tipo de entrada ACL_USER o ACL_GROUP, y está vacío para todas las demás entradas. Un identificador de usuario puede ser un nombre de usuario o un número de ID de usuario en forma decimal. Un identificador de grupo puede ser un nombre de grupo o un número de ID de grupo en forma decimal.

El tercer campo contiene los permisos de acceso discrecionales. Los permisos de lectura, escritura y búsqueda/ejecución se representan mediante los caracteres r, w y x, en este orden. Cada uno de estos caracteres se reemplaza por el carácter - para indicar que un permiso está ausente en la entrada de ACL. Al convertir de la forma de texto a la representación interna, los permisos que están ausentes no es necesario que se especifiquen.


Se permite espacio en blanco al principio y al final de cada entrada ACL, y inmediatamente antes y después de un separador de campo (el carácter de dos puntos).

FORMA DE TEXTO LARGO

La forma de texto largo contiene una entrada ACL por línea. Además, un signo de número (#) puede iniciar un comentario que se extiende hasta el final de la línea. Si una entrada ACL_USER, ACL_GROUP_OBJ o ACL_GROUP ACL contiene permisos que no también están contenidos en la entrada ACL_MASK, la entrada va seguida de un signo de número, la cadena “effective:” y los permisos de acceso efectivos definidos por esa entrada. Este es un ejemplo de la forma de texto largo:

user::rw
user:lisa:rw-         #effective:r-
group::r-
group:toolies:rw-     #effective:r-
mask::r-
other::r-

FORMA DE TEXTO CORTO

La forma de texto corto es una secuencia de entradas ACL separadas por comas, y se utiliza para la entrada. Los comentarios no son compatibles. Las palabras clave del tipo de etiqueta de entrada pueden aparecer en su forma completa o en su forma abreviada de una sola letra. La abreviatura de usuario es u, la abreviatura de grupo es g, la abreviatura de máscara es m y la abreviatura de otro es o. Los permisos pueden contener como máximo uno de los siguientes caracteres en cualquier orden: r, w, x. Estos son ejemplos de la forma de texto corto:

u::rw-,u:lisa:rw-,g::r--,g:toolies:rw-,m::r--,o::r-
g:toolies:rw,u:lisa:rw,u::wr,g::r,o::r,m::r

JUSTIFICACIÓN

El borrador 17 de IEEE 1003.1e define Listas de Control de Acceso que incluyen entradas de tipo de etiqueta ACL_MASK, y define una asignación entre bits de permiso de archivo que no es constante. El grupo de trabajo del estándar definió esta interfaz relativamente compleja para garantizar que las aplicaciones que cumplen con IEEE 1003.1 (“POSIX.1”) sigan funcionando según lo esperado en sistemas con ACL. El borrador 100.1e 17 contiene la justificación para elegir esta interfaz en la sección B.23.

CAMBIOS EN LAS UTILIDADES DE ARCHIVOS

En un sistema que admite ACL, las utilidades de archivos ls(1), cp(1) y mv(1) cambian su comportamiento de la siguiente manera:

Para los archivos que tienen una ACL predeterminada o una ACL de acceso que contiene más de las tres entradas ACL requeridas, la utilidad ls(1) en la forma larga producida por ls -l muestra un signo más (+) después de la cadena de permisos.

Si se especifica la bandera -p, la utilidad cp(1) también conserva las ACL. Si esto no es posible, se genera una advertencia.

La utilidad mv(1) siempre conserva las ACL. Si esto no es posible, se genera una advertencia.

El efecto de la utilidad chmod(1) y de la llamada al sistema chmod(2) en la ACL de acceso se describe en “CORRESPONDENCIA ENTRE ENTRADAS ACL Y BITS DE PERMISO DE ARCHIVO”.

ESTÁNDARES

El documento IEEE 1003.1e borrador 17 (“POSIX.1e”) describe varias extensiones de seguridad al estándar IEEE 100.1. Si bien se ha abandonado el trabajo en 1003.1e, muchos sistemas de tipo UNIX implementan partes del borrador 17 de POSIX.1e, o de borradores anteriores.


Las Listas de Control de Acceso (ACL) de Linux implementan el conjunto completo de funciones y utilidades definidas para las Listas de Control de Acceso en POSIX.1e, y varias extensiones. La implementación es totalmente compatible con el borrador 17 de POSIX.1e; las extensiones se marcan como tales. Las funciones de manipulación de la Lista de Control de Acceso se definen en la biblioteca ACL (libacl, -lacl). Las interfaces compatibles con POSIX se declaran en el encabezado . Las extensiones específicas de Linux a estas funciones se declaran en el encabezado .

NOTAS

PERMISOS DENEGADOS Y ESPACIOS DE NOMBRES DE USUARIO DE LINUX

Si bien las ACL se pueden usar para denegar permisos a los procesos en función de los grupos a los que pertenecen, esto se considera una mala práctica. Los asistentes con privilegios, como newuidmap(1), pueden dar a los procesos sin privilegios acceso a la llamada al sistema setgroups(2), lo que les permite dejar de ser miembros de un grupo suplementario y hacer que las restricciones basadas en esa membresía no tengan efecto. Para obtener más detalles, consulte user_namespaces(7).

CONSULTAR TAMBIÉN

chmod(1), creat(2), getfacl(1), ls(1), mkdir(2), mkfifo(2), mknod(2), mount(8), open(2), setfacl(1), stat(2), umask(1)

POSIX 1003.1e BORRADOR 17

https://wt.tuxomania.net/publications/posix.1e/download.html

FUNCIONES POSIX 1003.1e POR CATEGORÍA

Administración del almacenamiento de ACL acl_dup(3), acl_free(3), acl_init(3)

Manipulación de entradas de ACL acl_copy_entry(3), acl_create_entry(3), acl_delete_entry(3), acl_get_entry(3), acl_valid(3)

acl_add_perm(3), acl_calc_mask(3), acl_clear_perms(3), acl_delete_perm(3),
acl_get_permset(3), acl_set_permset(3)

acl_get_qualifier(3), acl_get_tag_type(3), acl_set_qualifier(3), acl_set_tag_type(3)

Manipulación de ACL en un objeto acl_delete_def_file(3), acl_get_fd(3), acl_get_file(3), acl_set_fd(3), acl_set_file(3)

Traducción de formato de ACL acl_copy_entry(3), acl_copy_ext(3), acl_from_text(3), acl_to_text(3), acl_size(3)

FUNCIONES POSIX 1003.1e POR DISPONIBILIDAD

El primer grupo de funciones es compatible con la mayoría de los sistemas con listas de control de acceso similares a POSIX, mientras que el segundo grupo es compatible con un número menor de sistemas. Para las aplicaciones que se van a portar, es mejor evitar el segundo grupo.

acl_delete_def_file(3), acl_dup(3), acl_free(3), acl_from_text(3), acl_get_fd(3),
acl_get_file(3), acl_init(3), acl_set_fd(3), acl_set_file(3), acl_to_text(3), acl_valid(3)

acl_add_perm(3), acl_calc_mask(3), acl_clear_perms(3), acl_copy_entry(3), acl_copy_ext(3),
acl_copy_int(3), acl_create_entry(3), acl_delete_entry(3), acl_delete_perm(3), acl_get_entry(3),
acl_get_permset(3), acl_get_qualifier(3), acl_get_tag_type(3), acl_set_permset(3),
acl_set_qualifier(3), acl_set_tag_type(3), acl_size(3)

EXTENSIONES DE LINUX

Estas extensiones no portátiles están disponibles en los sistemas Linux.

acl_check(3), acl_cmp(3), acl_entries(3), acl_equiv_mode(3), acl_error(3), acl_extended_fd(3),
acl_extended_file(3), acl_extended_file_nofollow(3), acl_from_mode(3), acl_get_perm(3),
acl_to_any_text(3)

AUTOR

Andreas Gruenbacher, <_>