Sèrie RHCSA: Ús d'ACL (Llistes de control d'accés) i muntatge de recursos compartits Samba/NFS - Part 7


A l'últim article (sèrie RHCSA Part 6) vam començar a explicar com configurar i configurar l'emmagatzematge del sistema local mitjançant parted i ssm.

També vam parlar de com crear i muntar volums xifrats amb una contrasenya durant l'arrencada del sistema. A més, us vam advertir que eviteu realitzar operacions crítiques de gestió d'emmagatzematge en sistemes de fitxers muntats. Tenint això en compte ara revisarem els formats de sistema de fitxers més utilitzats a Red Hat Enterprise Linux 7 i després procedirem a cobrir els temes de muntatge, ús i desmuntatge manual i automàtic de sistemes de fitxers de xarxa (CIFS i NFS), juntament amb la implementació. de llistes de control d'accés per al vostre sistema.

Abans de continuar, assegureu-vos que teniu un servidor Samba i un servidor NFS disponibles (tingueu en compte que NFSv2 ja no és compatible amb RHEL 7).

Durant aquesta guia utilitzarem una màquina amb IP 192.168.0.10 amb els dos serveis que s'executen com a servidor i una caixa RHEL 7 com a client amb l'adreça IP 192.168.0.18. Més endavant a l'article us direm quins paquets heu d'instal·lar al client.

Formats del sistema de fitxers a RHEL 7

A partir de RHEL 7, XFS s'ha introduït com el sistema de fitxers predeterminat per a totes les arquitectures a causa del seu alt rendiment i escalabilitat. Actualment admet una mida màxima del sistema de fitxers de 500 TB segons les últimes proves realitzades per Red Hat i els seus socis per al maquinari convencional.

A més, XFS habilita user_xattr (atributs d'usuari ampliats) i acl (llistes de control d'accés POSIX) com a opcions de muntatge predeterminades, a diferència d'ext3 o ext4 (ext2 es considera obsolet a partir de RHEL 7). ), el que significa que no cal que especifiqueu aquestes opcions explícitament ni a la línia d'ordres ni a /etc/fstab quan munteu un sistema de fitxers XFS (si voleu desactivar aquestes opcions en aquest últim cas, heu d'utilitzar explícitament < b>no_acl i no_user_xattr).

Tingueu en compte que els atributs d'usuari ampliats es poden assignar a fitxers i directoris per emmagatzemar informació addicional arbitrària, com ara el tipus MIME, el conjunt de caràcters o la codificació d'un fitxer, mentre que els permisos d'accés per als atributs d'usuari es defineixen mitjançant els bits de permís de fitxer habituals.

Com que tots els administradors del sistema, ja siguin principiants o experts, coneixen bé els permisos d'accés habituals als fitxers i directoris, que especifiquen certs privilegis (llegir, escriure i executar) per al propietari, el grup i el món (tots els altres). Tanmateix, no dubteu a consultar la part 3 de la sèrie RHCSA si necessiteu refrescar una mica la memòria.

Tanmateix, com que el conjunt estàndard ugo/rwx no permet configurar diferents permisos per a diferents usuaris, es van introduir ACL per tal de definir drets d'accés més detallats per a fitxers i directoris que els especificats pels permisos habituals.

De fet, els permisos definits per ACL són un superconjunt dels permisos especificats pels bits de permís del fitxer. Vegem com s'aplica tot això al món real.

1. Hi ha dos tipus d'ACL: ACL d'accés, que es poden aplicar a un fitxer específic o a un directori) i ACL per defecte, que només es poden aplicar a un directori. Si els fitxers que hi conté no tenen una ACL establerta, hereten l'ACL predeterminada del seu directori principal.

2. Per començar, les ACL es poden configurar per usuari, per grup o per a un usuari que no pertany al grup propietari d'un fitxer.

3. Les ACL s'estableixen (i s'eliminen) mitjançant setfacl, amb les opcions -m o -x, respectivament.

Per exemple, creem un grup anomenat tecmint i afegim usuaris johndoe i davenull:

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

I comprovem que tots dos usuaris pertanyen al grup suplementari tecmint:

# id johndoe
# id davenull

Ara creem un directori anomenat playground dins de /mnt, i un fitxer anomenat testfile.txt dins. Establirem el propietari del grup a tecmint i canviarem els seus permisos ugo/rwx per defecte a 770 (permisos de lectura, escriptura i execució concedits tant al propietari com al propietari del grup del fitxer):

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

A continuació, canvieu l'usuari a johndoe i davenull, en aquest ordre, i escriviu al fitxer:

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

Fins ara, tot bé. Ara fem que l'usuari gacanepa escrigui al fitxer i l'operació d'escriptura fallarà, cosa que era d'esperar.

Però, què passa si realment necessitem que l'usuari gacanepa (que no és membre del grup tecmint) tingui permisos d'escriptura a /mnt/playground/testfile.txt? El primer que et pot venir al cap és afegir aquest compte d'usuari al grup tecmint. Però això li donarà permisos d'escriptura a TOTS els fitxers on el bit d'escriptura estigui configurat per al grup, i no ho volem. Només volem que pugui escriure a /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

Donem a l'usuari gacanepa accés de lectura i escriptura a /mnt/playground/testfile.txt.

Executar com a root,

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

i haureu afegit correctament una ACL que permet que gacanepa escrigui al fitxer de prova. A continuació, canvieu a l'usuari gacanepa i torneu a intentar escriure al fitxer:

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

Per veure les ACL d'un fitxer o directori específic, utilitzeu getfacl:

# getfacl /mnt/playground/testfile.txt

Per establir una ACL per defecte a un directori (que el seu contingut heretarà tret que s'escriu d'una altra manera), afegiu d: abans de la regla i especifiqueu un directori en lloc d'un nom de fitxer:

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

L'ACL anterior permetrà als usuaris que no pertanyen al grup de propietaris tenir accés de lectura als continguts futurs del directori /mnt/playground. Tingueu en compte la diferència en la sortida de getfacl /mnt/playground abans i després del canvi:

El capítol 20 de la Guia d'administració d'emmagatzematge oficial de RHEL 7 ofereix més exemples d'ACL, i us recomano que hi feu una ullada i que el tingueu a mà com a referència.