GNU/Linux >> Tutoriales Linux >  >> Linux

Explicación de las listas de control de acceso en Linux

Este tutorial detalla las listas de control de acceso en Linux, para qué se usan y cómo administrarlas.

Como administrador del sistema, probablemente dedique bastante tiempo a configurar permisos para usuarios y grupos en su sistema.

Los permisos de archivo ya son bastante útiles para otorgar permisos de lectura, escritura o ejecución a directorios o archivos.

Pero, ¿y si necesitamos una forma más precisa de otorgar permisos a carpetas o archivos?

¿Qué pasa si quiero dar acceso a un archivo a un usuario específico o a un grupo específico, que no es el propietario actual del archivo?

Esto es exactamente lo que enumera el control de acceso, también ACL abreviado , están resolviendo en un sistema Linux.

En el tutorial de hoy, analizaremos muy de cerca las listas de control de acceso, qué son y cómo se utilizan para configurar correctamente un sistema Linux.

¿Listo?

Lo que aprenderás

Si sigue este tutorial hasta el final, aprenderá sobre los siguientes temas:

  • Qué listas de control de acceso son y cómo se pueden leer desde el comando ls;
  • Cómo establecer permisos básicos en un archivo usando setfacl comando:
  • Cómo leer listas de control de acceso usando getfacl comando;
  • ¿Qué es la máscara de lista de control de acceso? y cómo debe leerse;
  • Qué valores predeterminados de la lista de control de acceso son y cómo se pueden utilizar con eficacia

Es un programa bastante largo, así que sin más preámbulos, comencemos con una definición rápida de lo que son las listas de control de acceso.

Aspectos básicos de las listas de control de acceso en Linux

En Linux, hay dos formas de establecer permisos para usuarios y grupos:con permisos de archivo normales o con listas de control de acceso.

Definición de lista de control de acceso

Listas de control de acceso se utilizan en los sistemas de archivos de Linux para establecer permisos personalizados y más personalizados en archivos y carpetas. Las ACL permiten a los propietarios de archivos o usuarios privilegiados otorgar derechos a usuarios específicos o grupos específicos.

En Linux, como probablemente sepa, los permisos se dividen en tres categorías:uno para el propietario del archivo, uno para el grupo y otro para los demás.

Sin embargo, en algunos casos, es posible que desee otorgar acceso a un directorio (el permiso de ejecución, por ejemplo) a un usuario específico sin tener que colocar a este usuario en el grupo del archivo.

Esta es exactamente la razón por la que se inventaron las listas de control de acceso en primer lugar.

Lista de lista de control de acceso

En Linux, las listas de control de acceso no están habilitadas cuando crea un nuevo archivo o directorio en su host (excepto si un directorio principal tiene algunas ACL predefinidas).

Para ver si las listas de control de acceso están definidas para un archivo o directorio, ejecute el comando ls y busque un "+ ” carácter al final de la línea de permiso.

$ ls -l

Para mostrar la diferencia, aquí está la diferencia al listar archivos en una instancia mínima.

Ahora que tiene algunos conceptos básicos sobre las listas de control de acceso, veamos cómo puede comenzar a crear ACL básicas para sus archivos y directorios.

Creación de listas de control de acceso en Linux

Antes de comenzar con los comandos de ACL, es importante tener los paquetes instalados en su host.

Comprobando la instalación de paquetes ACL

Puede que no sea el caso si elige tener un servidor mínimo en ejecución.

Comience consultando la ayuda relacionada con el setfacl ejecutando el siguiente comando

$ setfacl --help

Si su host no puede encontrar el comando setfacl, asegúrese de instalar los paquetes necesarios para la administración de ACL.

$ sudo apt-get install acl -y

Tenga en cuenta que necesitará privilegios sudo en Debian 10 para ejecutar este comando.

Ejecute el comando setfacl y asegúrese de poder ver los comandos de ayuda esta vez.

Ahora que su host está configurado correctamente, veamos cómo funciona el comando setfacl.

Configuración de listas de control de acceso usando setfacl

Con las listas de control de acceso, hay dos comandos principales que debe recordar:setfacl y getfacl.

En este capítulo, vamos a echar un vistazo a setfacl El comando getfacl se explica por sí mismo.

El comando setfacl se usa en Linux para crear, modificar y eliminar listas de control de acceso en un archivo o directorio.

El setfacl tiene la siguiente sintaxis

$ setfacl {-m, -x}  {u, g}:<name>:[r, w, x] <file, directory>

Donde los corchetes significan una de las siguientes opciones y los corchetes regulares significan uno o varios elementos.

  • -m :significa que desea modificar una o varias entradas de ACL en el archivo o directorio.
  • -x :significa que desea eliminar una o varias entradas de ACL en un archivo o directorio.
  • {u, g} :si desea modificar la ACL para un usuario o para un grupo.
  • nombre :este es un parámetro opcional, se puede omitir si desea configurar las entradas de ACL para cada usuario o para cada grupo en su host.
  • [r, w, x] :para establecer permisos de lectura, escritura o ejecución en el archivo o directorio.

Por ejemplo, para establecer permisos de escritura específicos para un usuario en un archivo, escribiría el siguiente comando

$ setfacl -m u:user:w <file, directory>

Para establecer permisos de ejecución para todos los usuarios en su host, debe escribir el siguiente comando

$ setfacl -m u::x <file, directory>

Para establecer permisos completos para un grupo específico en su host, debe escribir el setfacl de esta manera

$ setfacl -m g:group:rwx <file, directory>

Ahora supongamos que desea eliminar una entrada de ACL de un archivo.

Para eliminar una entrada específica de un usuario de un archivo, debería especificar la opción x.

Nota:no puede especificar derechos de una sola entrada de ACL, lo que significa que no puede eliminar los permisos de escritura, manteniendo activos los permisos de lectura de ACL.

$ setfacl -x u:<user> <file, directory>

De manera similar, para eliminar ACL relacionado con grupos en su host, debe escribir el siguiente comando

$ setfacl -x g:<group> <file, directory>

Ahora que ha visto cómo puede crear fácilmente listas de control de acceso en Linux, es hora de ver cómo puede verificar las listas de control de acceso existentes en archivos y directorios.

Listado de listas de control de acceso usando getfacl

El comando getfacl se usa en Linux para imprimir una lista completa de todos los permisos regulares y las listas de control de acceso en un archivo o directorio.

El getfacl se puede utilizar con la siguiente sintaxis

$ getfacl <file, directory>

El comando getfacl se divide en varias categorías:

  • Nombre de archivo, propietario y grupo :la información sobre la propiedad del usuario y del grupo se muestra en la parte superior;
  • Permisos de usuario:en primer lugar, encontrará los permisos de usuario normales, también denominados usuarios propietarios, seguidos de cualquier entrada de ACL específica del usuario (llamadas usuarios designados)
  • Permisos de grupo :los grupos propietarios se presentan seguidos de entradas de ACL específicas del grupo, también llamadas grupos con nombre
  • Máscara :que restringe los permisos otorgados a las entradas de ACL, la máscara se detallará en la siguiente sección;
  • Otros permisos :esos permisos siempre están activos y esta es la última categoría explorada cuando ningún otro permiso coincide con el usuario o grupo actual.

Trabajar con la máscara de listas de control de acceso

Como probablemente vio en la última captura de pantalla, hay una entrada de máscara entre los grupos con nombre y los otros permisos.

Pero, ¿para qué se usa esta máscara?

La máscara de ACL es diferente de la máscara de creación de archivos (umask) y se usa para restringir las entradas de ACL existentes en un archivo o directorio.

La máscara de ACL se usa como el conjunto máximo de permisos de ACL, independientemente de los permisos existentes que excedan la máscara de ACL.

Como siempre, un diagrama vale más que cien palabras.

La máscara ACL se actualiza cada vez que ejecuta un comando setfacl a menos que especifique que no desea actualizar la máscara con el indicador -n.

Para evitar que se actualice la máscara, ejecute setfacl con el siguiente comando

$ setfacl -n -m u:antoine:rwx <file, directory>

Como puede ver en este ejemplo, configuré el usuario "antoine" para que tenga permisos completos en el archivo.

La máscara está configurada para restringir los permisos de lectura y escritura.

Como consecuencia, los "permisos efectivos" establecidos en este archivo para este usuario son de lectura y escritura, no se otorga el permiso de ejecución.

Nota:si su conjunto máximo de permisos difiere de la entrada de máscara, se le presentará una línea efectiva que calcula el conjunto "real" de entradas de ACL utilizadas.

Creación de listas de control de acceso predeterminadas en directorios

Como ya se mencionó en este artículo, es posible crear entradas de ACL en directorios y funcionan de la misma manera que funcionan las listas de control de acceso a archivos.

Sin embargo, hay una pequeña diferencia cuando se trata de directorios:tiene la opción de crear listas de control de acceso predeterminadas.

Predeterminados de listas de control de acceso se utilizan para crear entradas de ACL en un directorio que heredarán los objetos de este directorio, como archivos o subdirectorios.

Al crear entradas de ACL predeterminadas:

  • Los archivos creados en este directorio heredan las entradas de ACL especificadas en el directorio principal
  • Los subdirectorios creados en este directorio heredan las entradas de ACL así como las entradas de ACL predeterminadas del directorio principal.

Para crear entradas de ACL predeterminadas, especifique la opción -d al configurar ACL con el comando setfacl.

$ setfacl -d -m {u, g}:<name>:[r, w, x] <directory>

Por ejemplo, para asignar permisos de lectura a todos los archivos creados en un directorio, ejecutaría el siguiente comando

$ setfacl -d -m u::r directory

Ahora, cuando se crea un archivo en este directorio acl, puede ver que las entradas ACL predeterminadas se aplican al archivo.

De manera similar, cuando se crea un directorio en el directorio acl, heredará entradas de ACL predeterminadas especificadas en el directorio principal.

Tenga en cuenta que se recomienda especificar permisos predeterminados para las tres categorías (usuario, grupo y otros).

De hecho, al especificar una de las tres entradas, se crearán las dos restantes con permisos relacionados con la máscara de creación de archivos.

Eliminación de listas de control de acceso predeterminadas en directorios

Para eliminar las listas de control de acceso existentes predeterminadas en los directorios, use el indicador -k con el comando setfacl.

$ setfacl -k <directory>

Dado el ejemplo que especificamos anteriormente, aquí se explica cómo eliminar las entradas predeterminadas

$ setfacl -k acl-directory

Tenga en cuenta que eliminar las entradas de ACL del directorio principal no elimina las entradas de ACL en los archivos o directorios contenidos en el directorio principal.

Para eliminar las entradas de ACL predeterminadas en un directorio y todos los subdirectorios , tendrías que usar un recursivo opción (-R)

$ setfacl -kR <directory>

Conclusión

En este tutorial, aprendió sobre las listas de control de acceso en Linux, los comandos getfacl y setfacl.

Aprendió más sobre la máscara de listas de control de acceso y cómo se usan las ACL predeterminadas para crear entradas de ACL en archivos y subdirectorios contenidos en el directorio principal.

Si tiene curiosidad acerca de la administración del sistema Linux, tenemos muchos más tutoriales sobre el tema, ¡asegúrese de leerlos!


Linux
  1. Listas de control de acceso y unidades externas en Linux:lo que necesita saber

  2. Comando de historial en Linux explicado en profundidad

  3. Una introducción a las listas de control de acceso (ACL) de Linux

  4. ¿Monitoreo de acceso a archivos de Linux?

  5. UNIX/Linux:Conceptos básicos de las listas de control de acceso (ACL)

Explicación del control de acceso basado en roles (RBAC) de Snowflake

Comando Tr en Linux explicado con ejemplos

Explicación del comando fuente en Linux

Explicación de la redirección de entrada y salida en Linux

Comando de pantalla en Linux explicado

Comando Arping en Linux explicado