El comando setFacl en Linux

El comando setFacl en Linux
"Este tutorial explica cómo usar el comando setFacl para definir los permisos de ACL (lista de control de acceso).

Las listas de control de acceso (ACL) nos permiten administrar permisos con opciones adicionales que las ofrecidas por POSIX Permisos (permisos comunes que administramos con el chmod dominio).

Al leer este tutorial, aprenderá lo más importante setFacl Opciones relacionadas.

Este documento está optimizado para ambos usuarios que buscan rápido setFacl Instrucciones para implementar y para los usuarios que no están familiarizados con ACL, que pueden encontrar todo el contenido teórico necesario necesarios para comprenderlo después de la sección práctica. También agregué una tabla que resume el setFacl Opciones de comando descritas a continuación.

Todos los ejemplos incluidos en este artículo contienen capturas de pantalla, lo que facilita a cada usuario de Linux comprenderlos."

Las opciones de comando setFacl

Antes de comenzar con el setFacl comando, verifiquemos los permisos actuales del archivo llamado . Para verificar los permisos de ACL actuales, ejecute el getFacl comando usando la siguiente sintaxis:

getFacl

En mi caso, ejecuto el comando que se muestra en la captura de pantalla a continuación.

GetFaCl File1

Como puede ver en la captura de pantalla anterior, el archivo tiene permisos POSIX estándar para el propietario llamado Linuxhint (lectura y escritura), para el Linuxhint grupo (lectura), y para otros (lectura). El usuario y el grupo son Linuxhint.

Estos son los permisos que aplicamos usando el chmod Comando, que nos permite definir permisos para el propietario, el grupo y otros.

Ahora supongamos que queremos agregar permisos personalizados para otro usuario específico utilizando los permisos extendidos de ACL.

En el ejemplo a continuación, otorgaré permisos de lectura, escritura y ejecución sobre el mismo archivo al usuario Linuxhint2. Entonces, corro getFacl de nuevo para verificar los cambios.

setFacl -m U: Linuxhint2: RWX File1

Dónde:

  • setFacl: Invoca el programa para administrar los permisos.
  • -metro: Esta bandera se usa para modificar los permisos.
  • U: Linuxhint2: RWX: Especifica al usuario Linuxhint2 (U: Linuxhint2) y le otorga permisos de lectura, escritura y ejecución (: RWX).
  • archivo1: El archivo de destino al que se modifican/aplican los permisos.

NOTA: Como puede ver en la captura de pantalla anterior, además de los permisos regulares, podemos ver un nuevo usuario (Linuxhint2) con permisos personalizados se añadió, y una nueva línea llamada mascarilla; Esto se explicará más adelante a continuación.

Pero ahora, supongamos que queremos otorgar permisos a un grupo diferente en lugar de un usuario diferente. La sintaxis es casi la misma, excepto por el u: opción, que debe reemplazarse con gramo: Como mostré en la siguiente figura, donde el grupo linuxhint3 se le concede permisos de lectura y escritura. Entonces corro getFacl Para verificar las modificaciones.

setFacl -m G: Linuxhint3: RW File1

Como puede ver, un nuevo grupo (linuxhint3) se agregó con permisos de lectura y escritura.

Ahora expliquemos el mascarilla línea que apareció después de solicitar permisos de ACL extendidos.

El mascarilla Permite sobrescribir permisos para usuarios, grupos u otros, excepto para el propietario. Si la máscara es riñonal, Los usuarios, grupos y otros (todos excepto el propietario) con permisos de escritura o ejecución efectivos anteriores los perderán. El límite de máscara afecta a todos los usuarios, excepto al propietario. Es una función sobrescribir los permisos existentes, limitarlos o aumentarlos.

Para modificar la máscara, no necesita especificar usuarios o grupos; Simplemente especifique la máscara seguido de permisos utilizando metro: Como se muestra en el siguiente ejemplo.

setfacl -m m: r archivo1

Como puede ver, después de configurar una máscara con un límite de lectura, el Linuxhint2 Usuario, que anteriormente tenía permisos de lectura, escritura y ejecución, y el grupo linuxhint3, que tenían permisos de lectura y escritura, ahora solo tienen un permiso efectivo de lectura. El límite de lectura de máscara sobrescribió sus permisos anteriores. Solo los permisos del propietario permanecen intactos.

Pero si la máscara está configurada para leer permisos, y usted otorga a un usuario, grupo u otros permisos de lectura, la máscara se modificará automáticamente, aumentando su límite de acuerdo con los permisos recién otorgados. Por defecto, el límite de máscara no puede ser más bajo que los permisos otorgados existentes a otro que el propietario (veremos cómo evitar esto más adelante a continuación).

Esto significa que si la máscara está configurada en riñonal (Lectura), y otorgo a un usuario permisos de ejecución y escritura adicionales (RWX), la máscara se convertirá en RWX.

Primero, veamos nuestro escenario actual, donde está la máscara riñonal- (Solo permiso de lectura).

Ahora, veamos qué sucede si agrego la ejecución y escribo permisos para el usuario Linuxhint2, quien actualmente solo tiene permisos de lectura efectivos (como todos excepto el propietario).

setFacl -m U: Linuxhint2: RWX File1

Como puede ver, no solo el Linuxhint2 Se actualizaron los permisos de usuario, pero la máscara también. Esto se debe a que, por defecto, la máscara representa un límite, y si el límite es excedido por un nuevo pedido, aumenta.

Puede tener permisos de máscara específicos y otorgar permisos adicionales a un usuario específico, grupo u otros sin modificar la máscara implementando el indicador -n.

El -norte FLAG indica que el ACL mantiene la máscara sin cambios, incluso si algunos permisos lo exceden.

Veamos el nuevo escenario, donde se establece la máscara para riñonal-

En el ejemplo a continuación, el usuario Linuxhint2 recibe permisos de escritura y ejecución, pero el -norte La bandera se implementa para evitar que se cambie la máscara.

Como puede ver a continuación, el Linuxhint2 El usuario recibió derechos de escritura y ejecución, pero la máscara permanece sin cambios según las instrucciones del -norte bandera.

setfacl -n -m u: linuxhint2: wx file1

El -d La bandera se usa para definir los permisos predeterminados para el contenido de un directorio. Este indicador no afecta los permisos de directorio sino solo el contenido, incluidos los archivos y los subdirectorios.

Este indicador puede ser útil, por ejemplo, para crear permisos predeterminados para un usuario o grupo específico sobre el contenido del directorio. Cuando se crean nuevos archivos dentro de ese directorio, los usuarios o grupos definidos obtienen sus permisos definidos predeterminados.

En el escenario actual, hay un directorio con los siguientes permisos.

En el ejemplo a continuación, Otro (Todos los usuarios que no son propietarios o grupos) se darán como permisos de lectura predeterminados para el contenido del directorio llamado "directorio."

setfacl -d -m o: r directorio

Como puede ver en la captura de pantalla anterior, los permisos predeterminados para el usuario y el grupo permanecen, mientras que los permisos predeterminados a Otro fueron cambiados a solo lectura. Ahora, si se crean nuevos archivos y subdirectorios en el "directorio,"A otros recibirán permisos de lectura por defecto.

El -Riñonal La bandera le permite aplicar reglas de ACL de manera recursiva. Cuando -Riñonal se implementa, los permisos definidos afectarán el directorio especificado y todos sus archivos y subdirectorios. Esta bandera está presente en muchos comandos de Linux para tareas recursivas.

El siguiente comando da Otro permisos de lectura y escritura para directorio1 recursivamente.

setfacl -r -m o: directorio rw1

ACL le permite restaurar los permisos de copia de seguridad más tarde.

En la siguiente imagen, el comando getFaCl se usa para hacer una copia de seguridad recursiva del "directorio"A un archivo llamado"aclpermisión.TXT."

Directorio GetFaCl -R> Aclpermissions.TXT

Para restaurar la copia de seguridad, use el -restaurar opción seguida de =

En mi caso:

setFacl - -restaure = aclpermissions.TXT

También puede usar el comando setFacl para copiar los permisos de un archivo a otro.

El escenario actual para el inventario de archivos es el siguiente:

En el siguiente ejemplo, copio los permisos de archivo1 a un archivo llamado "inventario."

GetFaCl File1 | setFacl --set-file =-Inventario

¿Qué es un ACL (lista de control de acceso)

Un ACL es un sistema de permisos nativos de Windows para administrar el acceso a recursos como archivos, directorios, particiones, etc. Este sistema se basa en objetos a los que se definen los permisos para usuarios, grupos y otros, incluidos individualmente, como se muestra arriba.

Los permisos se adjuntan al archivo, directorio o sistema de archivos definidos que definen el acceso para el propietario, usuarios, grupos u otros.

Diferencia entre el permiso de ACL y POSIX

Mientras que con los permisos de POSIX, los usuarios pueden administrar los permisos para el propietario, el grupo y otros, ACL permite la administración de permisos personalizados para todos, incluidos usuarios y grupos.

Además, ACL implementa nuevos tipos de permisos, como los permisos predeterminados explicados en este tutorial.

Esto trae flexibilidad que no podemos disfrutar con los permisos de Posix regulares. Sin embargo, como puede ver, ambos trabajan en combinación, y su combinación trae una fuerte estructura de permisos.

El comando setFaCL se usa para establecer permisos de ACL en archivos, directorios y sistemas de archivos.
Esto se usa para especificar archivos, directorios, usuarios, grupos u otros con los permisos deseados cuando necesitan romper los límites de POSIX. El propietario de los recursos y los procesos con Cap_fowner tienen derecho a modificar los permisos de ACLS.

La tabla a continuación resume algunas opciones de ACL

Opción FUNCIÓN
-metro Modificar ACL
-X Retire todo ACLRemove ACL
-b Eliminar todo ACL
-k Eliminar permisos predeterminados
-Riñonal Se aplica a ACL recursivamente
-L Sigue los enlaces simbólicos
-PAG No sigue los enlaces simbólicos
metro: Definir máscara
-restaurar = Restaura ACL desde un archivo de copia de seguridad creado con getFacl -Riñonal
-prueba No aplica cambios pero muestra el resultado
-norte No afectes la máscara

Puede encontrar mucha más información sobre ACL y el comando setFacl en https: // linux.morir.net/man/5/acl y https: // Linux.morir.net/man/1/setfacl.

Conclusión

Como puede ver, ACL permite a los usuarios personalizar los permisos sobre los límites del sistema de permisos POSIX. Esto es extremadamente útil cuando los recursos deben compartirse con tipos de acceso específicos. Como puede ver, ACL es fácil de entender e implementar y cualquier usuario de Linux puede aprender independientemente de su nivel de conocimiento. El ACL es una excepción histórica en la que Linux importó una función de Windows. Puede obtener información adicional sobre ACL en la página del hombre.

Gracias por leer este tutorial explicando cómo usar el comando setFacl en Linux. Sigue nuestro blog para obtener más contenido profesional de Linux.