Nell’ultimo articolo (Serie RHCSA Parte 6) abbiamo iniziato a spiegare come configurare e impostare lo storage di sistema locale utilizzando parted e ssm.

Abbiamo anche discusso come creare e montare volumi crittografati con una password durante l’avvio del sistema. Inoltre, vi abbiamo avvisato di evitare di eseguire operazioni critiche di gestione dello storage su filesystem montati. Con questo in mente, esamineremo ora i formati di filesystem più utilizzati in Red Hat Enterprise Linux 7 e procederemo a coprire gli argomenti di montaggio, utilizzo e smontaggio sia manualmente che automaticamente i filesystem di rete (CIFS e NFS), insieme all’implementazione di liste di controllo degli accessi per il vostro sistema.
Prerequisiti
Prima di procedere ulteriormente, assicuratevi di avere un server Samba e un server NFS disponibili (notate che NFSv2 non è più supportato in RHEL 7).
In questa guida utilizzeremo una macchina con IP 192.168.0.10 con entrambi i servizi in esecuzione come server, e una macchina RHEL 7 come client con indirizzo IP 192.168.0.18. Più avanti nell’articolo vi diremo quali pacchetti è necessario installare sul client.
Formati di File System in RHEL 7
A partire da RHEL 7, XFS è stato introdotto come sistema di file predefinito per tutte le architetture a causa delle sue elevate prestazioni e scalabilità. Attualmente supporta una dimensione massima del filesystem di 500 TB secondo gli ultimi test eseguiti da Red Hat e dai suoi partner per l’hardware di base.
Inoltre, XFS abilita user_xattr (attributi utente estesi) e acl (liste di controllo degli accessi POSIX) come opzioni di montaggio predefinite, a differenza di ext3 o ext4 (ext2 è considerato deprecato a partire da RHEL 7), il che significa che non è necessario specificare tali opzioni esplicitamente né sulla riga di comando né in /etc/fstab durante il montaggio di un filesystem XFS (se si desidera disabilitare tali opzioni in quest’ultimo caso, è necessario utilizzare esplicitamente no_acl e no_user_xattr).
Tieni presente che gli attributi utente estesi possono essere assegnati a file e directory per memorizzare informazioni aggiuntive arbitrarie come il tipo MIME, il set di caratteri o la codifica di un file, mentre i permessi di accesso per gli attributi utente sono definiti dai bit di permesso regolari del file.
Liste di controllo degli accessi
Come ogni amministratore di sistema, sia principiante che esperto, è ben informato sulle autorizzazioni di accesso regolari su file e directory, che specificano determinati privilegi (lettura, scrittura e esecuzione) per il proprietario, il gruppo e “il mondo” (tutti gli altri). Tuttavia, sentiti libero di fare riferimento a Parte 3 della serie RHCSA se hai bisogno di rinfrescare un po’ la memoria.
Tuttavia, poiché il set standard ugo/rwx non consente di configurare autorizzazioni diverse per utenti diversi, sono stati introdotti ACL per definire diritti di accesso più dettagliati per file e directory rispetto a quelli specificati dalle autorizzazioni regolari.
Infatti, le autorizzazioni definite dalle ACL sono un sovrainsieme delle autorizzazioni specificate dai bit di autorizzazione del file. Vediamo come tutto ciò si traduce e si applica nel mondo reale.
1. Ci sono due tipi di ACL: ACL di accesso, che possono essere applicate a un file specifico o a una directory, e ACL predefinite, che possono essere applicate solo a una directory. Se i file contenuti al suo interno non hanno un ACL impostato, ereditano l’ACL predefinita della directory genitore.
2. Per iniziare, le ACL possono essere configurate per utente, per gruppo o per un utente che non fa parte del gruppo proprietario di un file.
3. Gli ACL vengono impostati (e rimossi) utilizzando setfacl, rispettivamente con le opzioni -m o -x.
Per esempio, creiamo un gruppo chiamato tecmint e aggiungiamo gli utenti johndoe e davenull ad esso:
# groupadd tecmint # useradd johndoe # useradd davenull # usermod -a -G tecmint johndoe # usermod -a -G tecmint davenull
E verifichiamo che entrambi gli utenti appartengano al gruppo supplementare tecmint:
# id johndoe # id davenull

Creiamo ora una directory chiamata playground all’interno di /mnt, e un file chiamato testfile.txt all’interno. Imposteremo il proprietario del gruppo su tecmint e cambieremo i permessi predefiniti ugo/rwx in 770 (permessi di lettura, scrittura ed esecuzione concessi sia al proprietario che al gruppo proprietario del file):
# mkdir /mnt/playground # touch /mnt/playground/testfile.txt # chmod 770 /mnt/playground/testfile.txt
Poi passiamo all’utente johndoe e davenull, in quest’ordine, e scriviamo sul file:
echo "My name is John Doe" > /mnt/playground/testfile.txt echo "My name is Dave Null" >> /mnt/playground/testfile.txt
Fino a qui tutto bene. Ora facciamo in modo che l’utente gacanepa scriva sul file – e l’operazione di scrittura fallirà, come ci si poteva aspettare.
Ma cosa succede se abbiamo effettivamente bisogno che l’utente gacanepa (che non è membro del gruppo tecmint) abbia i permessi di scrittura su /mnt/playground/testfile.txt? La prima cosa che potrebbe venirti in mente è aggiungere quel conto utente al gruppo tecmint. Ma questo gli darebbe i permessi di scrittura su TUTTI i file in cui il bit di scrittura è impostato per il gruppo, e non vogliamo questo. Vogliamo solo che possa scrivere su /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

Diamo all’utente gacanepa l’accesso in lettura e scrittura al file /mnt/playground/testfile.txt.
Esegui come root,
# setfacl -R -m u:gacanepa:rwx /mnt/playground
e avrai aggiunto con successo un ACL che consente a gacanepa di scrivere nel file di test. Quindi passa all’utente gacanepa e prova a scrivere nel file di nuovo:
$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt
Per visualizzare gli ACL di un file o directory specifico, utilizza getfacl:
# getfacl /mnt/playground/testfile.txt

Per impostare un ACL predefinito su una directory (che i suoi contenuti ereditano a meno che non vengano sovrascritti diversamente), aggiungi d: prima della regola e specifica una directory invece di un nome di file:
# setfacl -m d:o:r /mnt/playground
L’ACL sopra consentirà agli utenti non appartenenti al gruppo proprietario di avere accesso in lettura ai futuri contenuti della directory /mnt/playground. Nota la differenza nell’output di getfacl /mnt/playground prima e dopo il cambiamento:

Capitolo 20 nella Guida ufficiale di Amministrazione del Storage RHEL 7 fornisce più esempi di ACL e ti consiglio vivamente di dare un’occhiata e tenerla a portata di mano come riferimento.
Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/