Cómo configurar listas de control de acceso (ACL) y cuotas de disco para usuarios y grupos

Cómo configurar listas de control de acceso (ACL) y cuotas de disco para usuarios y grupos

Las listas de control de acceso (también conocidas como ACL) son una función del kernel de Linux que permite definir derechos de acceso más detallados para archivos y directorios que los especificados por los permisos ugo/rwx. normales.

Por ejemplo, los permisos estándar ugo/rwx. no permiten establecer diferentes permisos para diferentes usuarios individuales o grupos. Con las ACL, esto es relativamente fácil de hacer, como veremos en este artículo.

Comprobación de la compatibilidad del sistema de archivos con las ACL

Para asegurarse de que sus sistemas de archivos son compatibles actualmente con las ACL, debe compruebe que se hayan montado mediante la opción acl. Para hacer eso, usaremos tune2fs. para sistemas de archivos ext2/3/4 como se indica a continuación. Reemplace /dev/sda1. con el dispositivo o sistema de archivos que desea verificar:

# tune2fs-l/dev/sda1 | grep “Opciones de montaje predeterminadas:”

Nota. Con XFS. las listas de control de acceso son compatibles de forma inmediata.

En el siguiente sistema de archivos ext4. podemos ver que se han habilitado las ACL para /dev/xvda2.

# tune2fs-l/dev/xvda2 | grep “Opciones de montaje predeterminadas:”  Comprobar ACL habilitado en el sistema de archivos de Linux  Check ACL Enabled on Linux Filesystem Check ACL Enabled on Linux Filesystem freestar .config.enabled_slots.push

Si el comando anterior no indica que el sistema de archivos se ha montado con soporte para ACL, lo más probable es que se deba a la opción noacl. está presente en /etc/fstab.

En ese caso, elimínela, desmonte el sistema de archivos y vuelva a montarlo, o simplemente reiniciarte r después de guardar los cambios en /etc/fstab.

Introducción a las ACL en Linux

Para ilustrar cómo funcionan las ACL, usaremos un grupo llamado desarrolladores. y agregue usuarios walterwhite. y saulgoodman. (¡sí, soy un fan de Breaking Bad!):

# desarrolladores de groupadd # useradd walterwhite # useradd saulgoodman # usermod-a-G desarrolladores walterwhite # usermod-a-G desarrolladores saulgoodman

Antes de continuar, verifiquemos que ambos usuarios se han agregado al grupo de desarrolladores:

# id walterwhite # id saulgoodman  Buscar ID de usuario en Linux  Buscar ID de usuario en Linux Buscar ID de usuario en Linux

Ahora creemos un directorio llamado test. en /mnt. y un archivo llamado acl.txt. dentro (/mnt/test/acl.txt. .

Luego establecerá el propietario del grupo en desarrolladores. y cambiará sus permisos ugo/rwx. predeterminados de forma recursiva a 770. (otorgando así los permisos de lectura, escritura y ejecución concedidos tanto para el propietario como para el propietario del grupo del archivo):

# mkdir/mnt/test # touch/mnt/test/acl.txt # chgrp-R developers/mnt/test # chmod-R 770/mnt/prueba

Como se esperaba, puede escribir en /mnt/test/acl.txt. como walterwhite. o saulgoodman.

# su-walterwhite # echo “Mi nombre es Walter White”>/mnt/test/acl.txt # exit # su-saulgoodman # echo “Mi nombre es Saul Goodman”>>/mnt/test/acl.txt # exit  Verificar las reglas de ACL en los usuarios  Verificar reglas de ACL on Users Verificar las reglas de ACL sobre los usuarios

Hasta ahora todo bien. Sin embargo, pronto veremos un problema cuando necesitemos otorgar acceso de escritura a /mnt/test/acl.txt. para otro usuario que no está en el grupo de desarrolladores.

Los permisos estándar ugo/rwx. requerirían que el nuevo usuario se agregara al grupo de desarrolladores, pero eso le daría los mismos permisos sobre todos los objetos que pertenecen al grupo. . Ahí es precisamente donde las ACL son útiles.

Configuración de ACL en Linux

Hay dos tipos de ACL: las ACL de acceso. son (que se aplican a un archivo o directorio) y ACL predeterminadas (opcionales). que solo se pueden aplicar a un directorio.

Si los archivos dentro de un directorio donde una ACL predeterminada. se ha configurado no tienen una ACL propia, heredan la ACL predeterminada de su directorio principal.

Démosle al usuario gacanepa. acceso de lectura y escritura a /mnt/test/acl.txt. Antes de hacer eso, echemos un vistazo a la configuración actual de ACL en ese directorio con:

# getfacl/mnt/test/acl.txt

Luego, cambie las ACL en el archivo, use u: seguido del nombre de usuario y: rw para indicar permisos de lectura/escritura:

# setfacl-mu: gacanepa: rw/mnt/test/acl.txt

Y ejecute getfacl. en el archivo nuevamente para comparar. La siguiente imagen muestra el “Antes”. y el “Después”.

# getfacl/mnt/test/acl.txt  Establecer ACL en usuarios de Linux Establecer ACL en usuarios de Linux Establecer ACL en usuarios de Linux

A continuación, necesitaremos otorgar a otros permisos de ejecución en /mnt/test. directorio:

# chmod + x/mnt/test

Tenga en cuenta que para acceder al contenido de un directorio, un usuario normal necesita ejecutar permisos en ese directorio.

El usuario gacanepa. ahora debería poder escribir en el archivo. Cambie a esa cuenta de usuario y ejecute el siguiente comando para confirmar:

# echo “Mi nombre es Gabriel Cánepa”>>/mnt/test/acl.txt

Para establecer una ACL predeterminada en un directorio (que es el contenido heredará a menos que se sobrescriba lo contrario), agregue d: antes de la regla y especifique un directorio en lugar de un nombre de archivo:

# setfacl-md: o: r/mnt/test # getfacl/mnt/test/

La LCA anterior permitirá a los usuarios que no pertenecen al grupo de propietarios tener acceso de lectura al contenido futuro del directorio /mnt/test. Tenga en cuenta la diferencia en la salida de getfacl/mnt/test. antes y después del cambio:

 Establecer ACL predeterminada en el directorio de Linux  Establecer la ACL predeterminada en el directorio de Linux Establecer la ACL predeterminada en el directorio de Linux

Para eliminar una ACL específica, reemplace-m en los comandos anteriores con-x. Por ejemplo,

# setfacl-xd: o/mnt/test

Alternativamente, también puede usar la opción-b para eliminar TODAS las ACL en un solo paso:

# setfacl-b/mnt/test

Para obtener más información y ejemplos sobre el uso de ACL, consulte el capítulo 10. sección 2. de la Guía de seguridad de openSUSE (también disponible para descargar sin costo en formato PDF).

Establecer cuotas de disco de Linux en usuarios y sistemas de archivos

El espacio de almacenamiento es otro recurso que debe usarse y monitorearse cuidadosamente. Para hacer eso, las cuotas se pueden establecer en base al sistema de archivos, ya sea para usuarios individuales o para grupos.

Por lo tanto, se establece un límite en el uso de disco permitido para un usuario determinado o un grupo específico, y puede estar seguro de que sus discos no serán llenados por un usuario descuidado (o malintencionado).

Lo primero que debe hacer para habilitar cuotas en un sistema de archivos es montarlo con el usrquota o grpquota (para cuotas de usuarios y grupos, respectivamente) en /etc/fstab.

Por ejemplo, habilitemos cuotas basadas en usuarios en /dev/vg00/vol_backups. y cuotas basadas en grupos en /dev/vg00/vol_projects.

Tenga en cuenta que el UUID. se utiliza para identificar cada archivo sistema.

UUID = f6d1eba2-9aed-40ea-99ac-75f4be05c05a/home/projects ext4 defaults, grpquota 0 0 UUID = e1929239-5087-44b1-9396-53e09db6eb9e/home/backups ext4 defaults 0, usrquota> Desmonte y vuelva a montar ambos sistemas de archivos:

# umount/home/projects # umount/home/backups # mount-o remount/home/projects # mount-o remount/home/backups

Luego, verifica que las opciones usrquota y grpquota estén presentes en la salida de montaje (ver resaltado a continuación):

# montaje | grep vg00  Check Linux Cuota de usuario y cuota de grupo  Check Linux User Quota and Group Quota Check Linux Cuota de usuario y cuota de grupo

Finalmente, ejecute los siguientes comandos para inicializar y habilitar cuotas:

# quotacheck-avugc # quotaon-vu/home/backups # quotaon-vg/home/projects

Dicho esto, asignemos ahora cuotas al nombre de usuario y al grupo que mencionamos anteriormente. Más tarde, puede deshabilitar las cuotas con quotaoff.

Configuración de cuotas de disco de Linux

Comencemos configurando una ACL en /home/backups. para el usuario gacanepa. que le dará permisos de lectura, escritura y ejecución en ese directorio:

# setfacl-mu: gacanepa: rwx/home/backups/

Luego con,

# edquota-u gacanepa

Haremos el límite suave = 900. y el límite duro = 1000. bloques ( 1024 bytes/bloque * 1000 bloques = 1024000 bytes = 1 MB. de uso de espacio en disco.

También podemos establecer un límite de 20. y 25. como límites suaves y estrictos en la cantidad de archivos que este usuario puede crear.

El comando anterior lanzará el editor de texto ($ EDITOR). con un archivo temporal donde podemos establecer los límites mencionado anteriormente:

 Cuota de disco de Linux para el usuario  Cuota de disco de Linux para el usuario Cuota de disco de Linux para el usuario

Esta configuración hará que se muestre una advertencia a usuario gacanepa. cuando haya alcanzado los límites de bloque 900. o 20 inodo. durante un período de gracia predeterminado de 7 días.

Si la situación de exceso de cuota. no se ha eliminado para entonces (por ejemplo, eliminando archivos), el límite flexible se convertirá en el límite estricto y este usuario no podrá utilizar más espacio de almacenamiento. o creando más archivos.

Para probar, hagamos que el usuario gacanepa intente crear un archivo vacío de 2 MB. llamado test1. dentro de /home/copias de seguridad. :

# dd if =/dev/zero of =/home/backups/test1 bs = 2M count = 1 # ls-lh/home/backups/test1  Verificar la cuota de usuario de Linux en el disco  Verificar la cuota de usuario de Linux en el disco Verificar la cuota de usuario de Linux en el disco

Como puede ver, el archivo de operación de escritura falla debido al disco se ha superado la cuota. Dado que solo los primeros 1000 KB. se escriben en el disco, el resultado en este caso probablemente será un archivo dañado.

De manera similar, puede crear una ACL para los grupos de desarrolladores en para dar a los miembros de ese grupo acceso rwx a /home/projects.

# setfacl-mg: developers: rwx/home/projects/

Y establezca los límites de cuota con:

# edquota-g desarrolladores

Al igual que hicimos con el usuario gacanepa. anteriormente.

El período de gracia se puede especificar para cualquier cantidad de segundos, minutos, horas, días, semanas o meses ejecutando.

# edquota-t

y actualizando los valores en Bloquear período de gracia e Inode período de gracia.

A diferencia de bloqueo o uso de inodo (que se configuran por usuario o grupo), el período de gracia se establece en todo el sistema.

Para informar cuotas, puede usar quota-u [usuario] o quota-g [grupo] para una lista rápida o repquota-v [/ruta/a/sistema de archivos] para un informe más detallado (verboso) y con un formato agradable.

Por supuesto, querrá reemplazar [usuario], [grupo] y [/ruta/al/sistema de archivos] con nombres de usuarios/grupos específicos y el sistema de archivos que desea verificar.

Resumen

En este artículo hemos explicado cómo configurar Listas de control de acceso. y cuotas de disco para usuarios y grupos. Al usar ambos, podrá administrar los permisos y el uso del disco de manera más efectiva.

Si desea obtener más información sobre las cuotas, puede consultar el Mini-HowTo de Cuotas en el Proyecto de documentación de Linux.

No hace falta decir que también puede contar con nosotros para responder sus preguntas. Envíelos utilizando el formulario de comentarios a continuación y estaremos encantados de echar un vistazo.