Búsqueda de sitios web

Serie RHCSA: Uso de ACL (listas de control de acceso) y montaje de recursos compartidos Samba/NFS - Parte 7


En el último artículo (serie RHCSA, Parte 6) comenzamos explicando cómo instalar y configurar el almacenamiento del sistema local usando parted y ssm.

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

Requisitos previos

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

Durante esta guía usaremos una máquina con IP 192.168.0.10 con ambos servicios ejecutándose como servidor, y una máquina RHEL 7 como cliente con dirección IP 192.168 .0.18. Más adelante en el artículo le diremos qué paquetes necesita instalar en el cliente.

Formatos del sistema de archivos en RHEL 7

A partir de RHEL 7, XFS se introdujo como el sistema de archivos predeterminado para todas las arquitecturas debido a su alto rendimiento y escalabilidad. Actualmente admite 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 necesita especificar esas opciones explícitamente ni en la línea de comando ni en /etc/fstab al montar un sistema de archivos XFS (si desea deshabilite dichas opciones en este último caso, debe usar explícitamente no_acl y no_user_xattr).

Tenga en cuenta que los atributos de usuario extendidos se pueden asignar a archivos y directorios para almacenar información adicional arbitraria, como el tipo mime, el juego de caracteres o la codificación de un archivo, mientras que los permisos de acceso para los atributos de usuario se definen mediante los bits de permiso de archivo normales.

Listas de control de acceso

Como todo administrador de sistemas, ya sea principiante o experto, está familiarizado con los permisos de acceso regulares a 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, no dude en consultar la Parte 3 de la serie RHCSA si necesita refrescar su memoria un poco.

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

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

1. Hay dos tipos de ACL: ACL de acceso, que se pueden aplicar a un archivo o directorio específico) y >ACL predeterminadas, que solo se pueden aplicar a un directorio. Si los archivos contenidos en él no tienen una ACL configurada, heredan la ACL predeterminada de su directorio principal.

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

3. Las ACL se configuran (y eliminan) usando setfacl, ya sea con -m o - x opciones, respectivamente.

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

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

Ahora creemos un directorio llamado patio de juegos dentro de /mnt y un archivo llamado testfile.txt dentro. Configuraremos el propietario del grupo en tecmint y cambiaremos sus permisos predeterminados ugo/rwx a 770 (permisos de lectura, escritura y ejecución otorgados a ambos). el propietario y el 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 ahora, todo bien. Ahora hagamos 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 te puede venir a la mente 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á configurado 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

Démosle al usuario gacanepa acceso de lectura y escritura a /mnt/playground/testfile.txt.

Ejecutar como root,

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

y habrá agregado con éxito una ACL que permite a gacanepa escribir en el archivo de prueba. Luego cambie al usuario gacanepa e intente escribir en el archivo nuevamente:

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

Para ver las ACL de un archivo o directorio específico, utilice getfacl:

getfacl /mnt/playground/testfile.txt

Para establecer una ACL predeterminada para un directorio (que su 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 -m d:o:r /mnt/playground

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

El capítulo 20 de la Guía oficial de administración de almacenamiento de RHEL 7 proporciona más ejemplos de ACL y le recomiendo encarecidamente que lo consulte y lo tenga a mano como referencia.