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

Cómo establecer 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 característica del kernel de Linux que permite definir más derechos de acceso de grano fino para archivos y directorios que los especificados por regularmente ugo/rwx permisos.

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

Verificación de compatibilidad del sistema de archivos con ACLS

Para asegurarse de que sus sistemas de archivos estén admitiendo ACL, debe verificar que se hayan montado utilizando la opción ACL. Para hacer eso, usaremos Tune2fs para sistemas de archivos ext2/3/4 como se indica a continuación. Reemplazar /dev/sda1 Con el dispositivo o el sistema de archivos desea verificar:

# tune2fs -l /dev /sda1 | GREP "Opciones de montaje predeterminadas:" 

Nota: Con XFS, Las listas de control de acceso son compatibles con el cuadro.

En el siguiente ext4 Sistema de archivos, podemos ver que las ACL han sido habilitadas para /dev/xvda2:

# tune2fs -l /dev /xvda2 | GREP "Opciones de montaje predeterminadas:" 
Verifique el ACL habilitado en el sistema de archivos de Linux

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

En ese caso, retírelo, desmonte el sistema de archivos y luego lo monte nuevamente, o simplemente reinicie su sistema después de guardar los cambios en /etc/fstab.

Introducción de ACL en Linux

Para ilustrar cómo funcionan las ACL, usaremos un grupo llamado desarrolladores y agregar usuarios Walterwhite y Saulgoodman (Sí, soy un fanático de Breaking Bad!) a él.:

# GroupAdd Developers # UserAdd Walterwhite # userAdd Saulgoodman # usermod -a -g desarrolladores Walterwhite # usermod -a -g desarrolladores saulgoodman 

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

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

Ahora creemos un directorio llamado prueba en /MNT, y un archivo llamado LCA.TXT adentro (/mnt/test/acl.TXT).

Luego estableceremos el propietario del grupo para desarrolladores y cambiar su valor predeterminado ugo/rwx permisos recursivamente a 770 (Occionando así los permisos de lectura, escritura y ejecución otorgados tanto al propietario como al propietario del grupo del archivo):

# mkdir/mnt/test # touch/mnt/test/acl.txt # chgrp -r desarrolladores /mnt /test # chmod -r 770 /mnt /test 

Como se esperaba, puedes escribir para /mnt/test/acl.TXT como Walterwhite o Saulgoodman:

# Su - Walterwhite # echo "Mi nombre es Walter White">/Mnt/Test/ACL.txt # salida # su - saulgoodman # echo "Mi nombre es saul goodman" >>/mnt/test/acl.Txt # Salir 
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.

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

Configuración de ACL en Linux

Hay dos tipos de ACL: Access ACLS son (que se aplican a un archivo o directorio), y ACLS predeterminado (opcional), que solo se puede aplicar a un directorio.

Si archiva dentro de un directorio donde un ACL predeterminado se ha establecido no tienen un ACL propio, heredan el ACL predeterminado de su directorio principal.

Vamos al usuario gacanepa Leer y escribir acceso a /mnt/test/acl.TXT. Antes de hacerlo, echemos un vistazo a la configuración de ACL actual en ese directorio con:

# getFacl/mnt/test/acl.TXT 

Luego cambie las ACL en el archivo, use U: seguido por el nombre de usuario y : RW Para indicar permisos de lectura / escritura:

# setfacl -m u: gacanepa: rw/mnt/test/acl.TXT 

Y correr getFacl en el archivo nuevamente para comparar. La siguiente imagen muestra el "Antes" y "Después":

# getFacl/mnt/test/acl.TXT 
Establezca ACL en los usuarios de Linux

A continuación, necesitaremos dar a otros ejecutar permisos en el /mnt/prueba directorio:

# chmod +x /mnt /test 

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

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 un ACL predeterminado en un directorio (que su contenido heredará a menos que se sobrescribiera de lo contrario), agregue d: antes de la regla y especifique un directorio en lugar de un nombre de archivo:

# setfacl -m d: o: r/mnt/test # getFacl/mnt/test/ 

El ACL anterior permitirá a los usuarios que no están en el grupo de propietarios tener acceso de lectura al contenido futuro del /mnt/prueba directorio. Tenga en cuenta la diferencia en la salida de getFacl /mnt /test antes y después del cambio:

Establecer ACL predeterminado en el directorio de Linux

Para eliminar un ACL específico, reemplace -metro En los comandos de arriba con -X. Por ejemplo,

# setfacl -x d: o /mnt /test 

Alternativamente, también puede usar el -b opción 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 Capítulo 10, sección 2, de la Guía de seguridad de OpenSuse (también disponible para descargar sin costo en formato PDF).

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

El espacio de almacenamiento es otro recurso que debe usarse y monitorear 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 coloca un límite en el uso del disco permitido para un usuario determinado o un grupo específico, y puede estar seguro de que sus discos no serán llenados a su capacidad por un usuario descuidado (o malintencionado).

Lo primero que debe hacer para habilitar las cuotas en un sistema de archivos es montarlo con las opciones de Usrquota o Grpquota (para cuotas de usuario y grupo, respectivamente) en /etc/fstab.

Por ejemplo, habilitemos las cuotas basadas en el usuario en /dev/vg00/vol_backups y cuotas grupales en /dev/vg00/vol_projects.

Tenga en cuenta que el Uuid se usa para identificar cada sistema de archivos.

Uuid = f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home /proyectos ext4 predeterminados, grpquota 0 0 uuid = e1929239-5087-44b1-9396-53E09DB6EB9E /BOSCES 

Desmontar y volver a montar ambos sistemas de archivos:

# Umount /Home /Projects # Umount /Home /Backups # Mount -O Remount /Home /Projects # Mount -O RENDEUNT /Home /Backups 

Luego verifique que las opciones de Usrquota y Grpquota estén presentes en la salida del montaje (ver a continuación):

# Monte | GREP VG00 
Consulte la cuota de usuario de Linux y la cuota de grupo

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

# cuitacheck -avugc # cuotaon -vu /home /backups # cuotaon -vg /home /proyectos 

Dicho esto, ahora asignemos cuotas al nombre de usuario y el grupo que mencionamos anteriormente. Luego puede deshabilitar las cuotas con cuota.

Configuración de cuotas de disco de Linux

Comencemos por configurar un ACL /Inicio/copias de seguridad para el usuario gacanepa, Lo que le dará lectura, escritura y ejecutar permisos en ese directorio:

# setfacl -m u: gacanepa: rwx/home/backups/ 

Luego con,

# Edquota -u Gacanepa 

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

También podemos colocar un límite de 20 y 25 Como limitas suaves y duras en la cantidad de archivos que este usuario puede crear.

El comando anterior iniciará el editor de texto ($ Editor) Con un archivo temporal donde podemos establecer los límites mencionados anteriormente:

Cuota de disco de Linux para usuario

Esta configuración hará que se muestre una advertencia al usuario gacanepa Cuando ha llegado al 900 bloque o 20 inodo Límites para un período de gracia predeterminado de 7 días.

Si el quirófano La situación no se ha eliminado para entonces (por ejemplo, eliminando archivos), el límite suave se convertirá en el límite duro y se evitará que este usuario use más espacio de almacenamiento o cree más archivos.

Para probar, hagamos que el usuario Gacanepa intente crear un vacío 2 MB Archivo nombrado prueba1 adentro /Inicio/copias de seguridad:

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

Como puede ver, el archivo de operación de escritura falla debido a que se ha excedido la cuota de disco. Ya que solo el primero 1000 kb se escriben en el disco, el resultado en este caso probablemente será un archivo corrupto.

Del mismo modo, puede crear una ACL para los grupos de desarrolladores para dar acceso a los miembros de ese grupo RWX a /Inicio/Proyectos:

# setfacl -m g: desarrolladores: rwx/home/proyectos/ 

Y establezca los límites de la cuota con:

# edquota -g desarrolladores 

Tal como lo hicimos con el usuario gacanepa más temprano.

El período de gracia se puede especificar por cualquier número de segundos, actas, horas, días, semanas o meses ejecutando.

# edquota -t 

y actualizar los valores en Bloquear el período de gracia y el período de gracia de inodo.

A diferencia del uso de bloque o inodo (que se establecen en un usuario o base de grupo), el período de gracia se establece en todo el sistema.

Para informar las cuotas, puede usar la cuota -u [usuario] o cuota -g [grupo] para una lista rápida o Repquota -V [/Path/To/Filesystem] Para un informe más detallado (detallado) y bien formateado.

Por supuesto, querrás reemplazar [usuario], [grupo], y [/Path/To/Files System] con nombres específicos de usuarios / grupos y sistema de archivos, desea verificar.

Resumen

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

Si desea obtener más información sobre las cuotas, puede consultar la cuota mini-howto en el proyecto de documentación de Linux.

No hace falta decir que también puede contar con nosotros para responder preguntas. Simplemente envíelos usando el formulario de comentarios a continuación y estaremos más que contentos de echar un vistazo.

Convertirse en administrador del sistema certificado por Linux