Serie RHCSA: Uso de ACL (Listas de control de acceso) y montaje de comparticiones Samba / NFS – Parte 7

En el último artículo (Serie RHCSA Parte 6) comenzamos a explicar cómo configurar y configurar el almacenamiento del sistema local usando parted y ssm.

RHCSA Series:: Configure ACL’s and Mounting NFS / Samba Shares – Part 7

También discutimos cómo crear y montar volúmenes encriptados con una contraseña durante el arranque del sistema. Además, le advertimos que evite realizar operaciones críticas de gestión de almacenamiento en sistemas de archivos montados. Con eso en mente, revisaremos ahora los formatos de sistema de archivos más utilizados en Red Hat Enterprise Linux 7 y luego procederemos a cubrir los temas de montaje, uso y desmontaje tanto manual como automáticamente en sistemas de archivos de red (CIFS y NFS), junto con la implementación de listas de control de acceso para su sistema.

Prerrequisitos

Antes de continuar, asegúrese de tener un servidor Samba y un servidor NFS disponibles (tenga en cuenta que NFSv2 ya no es compatible en RHEL 7).

En esta guía utilizaremos una máquina con IP 192.168.0.10 con ambos servicios en funcionamiento como servidor, y un equipo RHEL 7 como cliente con la dirección IP 192.168.0.18. Más adelante en el artículo le diremos qué paquetes necesita instalar en el cliente.

Formatos de Sistema de Archivos en RHEL 7

Comenzando con RHEL 7, XFS ha sido introducido como el sistema de archivos predeterminado para todas las arquitecturas debido a su alto rendimiento y escalabilidad. Actualmente soporta un tamaño máximo de sistema de archivos de 500 TB según las últimas pruebas realizadas por Red Hat y sus socios para hardware convencional.

Además, XFS habilita user_xattr (atributos de usuario extendidos) y acl (listas de control de acceso POSIX) como opciones de montaje predeterminadas, a diferencia de ext3 o ext4 (ext2 se considera obsoleto a partir de RHEL 7), lo que significa que no es necesario especificar esas opciones explícitamente ya sea en la línea de comandos o en /etc/fstab al montar un sistema de archivos XFS (si desea deshabilitar esas opciones en este último caso, debe usar explícitamente no_acl y no_user_xattr).

Tenga en cuenta que los atributos de usuario extendidos pueden asignarse a archivos y directorios para almacenar información adicional arbitraria como el tipo MIME, conjunto de caracteres o codificación de un archivo, mientras que los permisos de acceso para los atributos de usuario están definidos por los bits regulares de permiso de archivo.

Listas de Control de Acceso

Como todo administrador de sistemas, ya sea principiante o experto, está bien familiarizado con los permisos de acceso regulares en archivos y directorios, que especifican ciertos privilegios (lectura, escritura y ejecución) para el propietario, el grupo y “el mundo” (todos los demás). Sin embargo, si necesitas refrescar un poco tu memoria, siéntete libre de consultar Parte 3 de la serie RHCSA.

Sin embargo, dado que el conjunto estándar ugo/rwx no permite configurar diferentes permisos para diferentes usuarios, se introdujeron los ACLs para definir derechos de acceso más detallados para archivos y directorios que los especificados por los permisos regulares.

De hecho, los permisos definidos por ACL son un superset de los permisos especificados por los bits de permiso de archivo. Veamos cómo se aplica todo esto en el mundo real.

1. Hay dos tipos de ACLs: ACLs de acceso, que se pueden aplicar a un archivo específico o a un directorio, y ACLs predeterminados, que solo se pueden aplicar a un directorio. Si los archivos contenidos en él no tienen un ACL establecido, heredan el ACL predeterminado de su directorio padre.

2. Para empezar, los ACLs se pueden configurar por usuario, por grupo o por un usuario que no esté en el grupo propietario de un archivo.

3. Las ACLs se establecen (y eliminan) utilizando setfacl, con las opciones -m o -x, respectivamente.

Por ejemplo, creemos un grupo llamado tecmint y agreguemos los usuarios johndoe y davenull a él:

# groupadd tecmint
# useradd johndoe
# useradd davenull
# usermod -a -G tecmint johndoe
# usermod -a -G tecmint davenull

Y verifiquemos que ambos usuarios pertenecen al grupo suplementario tecmint:

# id johndoe
# id davenull
Verify Users

Ahora creemos un directorio llamado playground dentro de /mnt, y un archivo llamado testfile.txt dentro. Estableceremos el propietario del grupo como tecmint y cambiaremos sus permisos predeterminados ugo/rwx a 770 (permisos de lectura, escritura y ejecución otorgados tanto al propietario como al propietario del grupo del archivo):

# mkdir /mnt/playground
# touch /mnt/playground/testfile.txt
# chmod 770 /mnt/playground/testfile.txt

Luego cambie de usuario a johndoe y davenull, en ese orden, y escriba en el archivo:

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

Hasta aquí todo bien. Ahora permitamos que el usuario gacanepa escriba en el archivo, y la operación de escritura fallará, como era de esperar.

Pero ¿qué pasa si realmente necesitamos que el usuario gacanepa (que no es miembro del grupo tecmint) tenga permisos de escritura en /mnt/playground/testfile.txt? Lo primero que se te puede ocurrir es agregar esa cuenta de usuario al grupo tecmint. Pero eso le dará permisos de escritura en TODOS los archivos donde el bit de escritura esté establecido para el grupo, y no queremos eso. Solo queremos que pueda escribir en /mnt/playground/testfile.txt.

# touch /mnt/playground/testfile.txt
# chown :tecmint /mnt/playground/testfile.txt
# chmod 777 /mnt/playground/testfile.txt
# su johndoe
$ echo "My name is John Doe" > /mnt/playground/testfile.txt
$ su davenull
$ echo "My name is Dave Null" >> /mnt/playground/testfile.txt
$ su gacanepa
$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt
Manage User Permissions

Demos acceso de lectura y escritura al usuario gacanepa a /mnt/playground/testfile.txt.

Ejecuta como root,

# setfacl -R -m u:gacanepa:rwx /mnt/playground

y habrás añadido con éxito un ACL que permite a gacanepa escribir en el archivo de prueba. Luego cambia al usuario gacanepa e intenta escribir en el archivo de nuevo:

$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

Para ver los ACLs de un archivo o directorio específico, usa getfacl:

# getfacl /mnt/playground/testfile.txt
Check ACLs of Files

Para establecer un ACL predeterminado a un directorio (cuyos contenidos heredarán a menos que se sobrescriban), añade d: antes de la regla y especifica un directorio en lugar de un nombre de archivo:

# setfacl -m d:o:r /mnt/playground

El ACL anterior permitirá a los usuarios que no estén en el grupo propietario tener acceso de lectura a los futuros contenidos del directorio /mnt/playground. Observa la diferencia en la salida de getfacl /mnt/playground antes y después del cambio:

Set Default ACL in Linux

El Capítulo 20 en la Guía de Administración de Almacenamiento oficial de RHEL 7 proporciona más ejemplos de ACL, y te recomiendo encarecidamente que le eches un vistazo y lo tengas a mano como referencia.

Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/