RHCE 7: Condivisioni dei servizi SMB/CIFS in un gruppo

By | Marzo 19, 2019

Samba è un’implementazione open source dei protocolli SMB (server message block) e CIFS (Common Internet File System), ci consente di accedere alle risorse di condivisione file di Windows da Linux. Con Samba possiamo esportare directory specifiche all’interno di un file system attraverso la rete ad altri client Windows o Linux, permettendoci di condividere vari file sulla rete tra diversi sistemi operativi.Qui tratteremo la configurazione di una condivisione di file samba che consente la collaborazione di gruppo. Gli utenti all’interno di un particolare gruppo saranno in grado di creare contenuti all’interno di una condivisione samba che altri utenti all’interno dello stesso gruppo saranno in grado di accedere e modificare.

Abbiamo già spiegato come configurare le condivisioni di samba per clienti specifici, questo post si espanderà su queste informazioni.

Ambiente di esempio

Ecco un elenco dei nostri server con cui testeremo, entrambi utilizzano CentOS 7.

Client Samba: 192.168.0.100 – Questo client Linux monterà una directory dal server SMB/CIFS.
Samba Server: 192.168.0.200 – Questo server Linux servirà una directory su SMB/CIFS al client.

 

Configurazione del server Samba

Installazione di base del server Samba

Il server che ha i dati da condividere funzionerà come server samba e ha bisogno del pacchetto samba installato.

yum install samba -y

Una volta installato, possiamo abilitare il nostro server Samba ad avviare automaticamente il servizio SMB richiesto all’avvio, inoltre avvieremo il servizio ora poiché non è in esecuzione di default dopo l’installazione. Lo facciamo anche con il servizio NMB, che è responsabile di NetBIOS e fa parte del pacchetto samba.

Per ulteriori informazioni sulla gestione dei servizi di base con systemctl, consultare la nostra guida qui.

systemctl enable smb nmb
systemctl start smb nmb

Successivamente il firewall deve essere configurato per consentire il corretto traffico SMB, ciò può essere fatto come mostrato di seguito con firewalld. Questa modifica consentirà il traffico delle porte TCP 135/445 SMB/CIFS nel server da qualsiasi indirizzo IP di origine. Anche la configurazione del firewall deve essere ricaricata poiché abbiamo messo in atto una regola permanente che non si applica alla configurazione in esecuzione.

firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

Configura la condivisione di gruppo

Quindi dobbiamo configurare samba e la condivisione di gruppo sul nostro server.

Iniziamo con la creazione di un gruppo e due utenti, in questo caso group1 sarà il gruppo in cui entreranno entrambi i nostri utenti.

[root@server ~]# groupadd group1
[root@server ~]# useradd -s /sbin/nologin -G group1 user1
[root@server ~]# useradd -s /sbin/nologin -G group1 user2

Questi due utenti non saranno utilizzati per accedere direttamente al sistema, motivo per cui è stata specificata la shell / sbin / nologin, saranno solo gli utenti SMB. Questo viene fatto impostando le loro password con smbpasswd, come mostrato sotto.

[root@server ~]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.

[root@server ~]# smbpasswd -a user2
New SMB password:
Retype new SMB password:
Added user user2.

Ora prepariamo la directory da condividere al gruppo, condivideremo / groupshare dal server.

[root@server ~]# mkdir /groupshare
[root@server ~]# chown root:group1 /groupshare
[root@server ~]# chmod 2770 /groupshare

Abbiamo impostato il gruppo della directory/groupshare che appartiene al nostro gruppo1 appena creato. Le autorizzazioni sono state impostate su 2770, dove i primi 2 indicano SetGID mentre 770 sono permessi standard. SetGID viene utilizzato per impostare il gruppo di file e directory creati all’interno di /groupshare nello stesso gruppo che è stato impostato nella directory /groupshare stessa. Poiché /groupshare è di proprietà di group1, tutti i file o le directory create in /groupshare saranno di proprietà del gruppo group1 richiesto per la collaborazione di gruppo.

Questo verrà visualizzato come un ‘s‘ dove il permesso ‘x‘ si trova di solito nella directory per il gruppo. Se non esiste il permesso “x” per il gruppo, la “s” appare invece come “S“.

[root@server ~]# ls -la /groupshare/
total 4
drwxrws---.  2 root group1    6 May 22 02:55 .

Quindi dobbiamo configurare SELinux, una directory richiede il contesto samba_share_t per essere condivisa con samba.

[root@server ~]# semanage fcontext -a -t samba_share_t "/groupshare(/.*)?"
[root@server ~]# restorecon -v /groupshare/
restorecon reset /groupshare context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:samba_share_t:s0

Infine, abbiamo bisogno di definire effettivamente la condivisione del file di gruppo nel file di configurazione /etc/samba/smb.conf, abbiamo aggiunto il contenuto sottostante a questo file.

[groupshare]
        create mask = 0660
        force create mode = 0660
        comment = This allows us to share the /groupshare directory to group1
        path = /groupshare
        valid users = @group1
        writable = yes

Create mask” e “force create mode” assicurano che quando un utente in group1 crea un nuovo file, le autorizzazioni saranno impostate su 660. Per default i file sono stati creati con 644 che impedisce ad altri membri del gruppo di scrivere sui file . Gli “utenti validi” specificano il nostro gruppo1, i gruppi sono specificati con il prefisso ‘@‘.

Per applicare queste modifiche, riavviare o ricaricare il servizio smb.

[root@server ~]# systemctl restart smb

Configurazione del client Samba

Ora che il server è pronto per accettare le connessioni SMB, è necessario preparare il client.

Prima installa il pacchetto samba-client e cifs-utils che viene utilizzato per il montaggio delle condivisioni SMB.

yum install samba-client cifs-utils -y

Successivamente modifica il firewall abilitando il servizio samba-client.

firewall-cmd --permanent --add-service=samba-client
firewall-cmd --reload

Test della condivisione file di gruppo

Il sistema client dovrebbe ora essere in grado di montare la condivisione di file samba come utente1 o utente2. Entrambi questi utenti dovrebbero essere in grado di modificare gli stessi file che saranno di proprietà di group1.

Innanzitutto come utente1 installiamo la directory /groupshare dal server e creiamo “shared-file” con alcuni contenuti.

[root@client ~]# mount //192.168.0.200/groupshare /mnt -o username=user1
Password for user1@//192.168.0.200/groupshare:  ********
[root@client ~]# echo user1 > /mnt/shared-file

Fatto questo, smonteremo e monteremo nuovamente come utente2 questa volta e aggiungeremo più contenuti al file.

[root@client ~]# umount /mnt

[root@client ~]# mount //192.168.0.200/groupshare /mnt -o username=user2
Password for user2@//192.168.0.200/groupshare:  ********
[root@client ~]# echo user2 >> /mnt/shared-file

Ora sul server possiamo controllare questo file di file condiviso e vedere che è stato correttamente impostato sulle autorizzazioni di 660, consentendo al gruppo di group1 sia l’accesso in lettura che in scrittura come previsto. Vedremo anche che contiene i contenuti sia dell’utente1 che dell’utente2, confermando che entrambi gli utenti sono in grado di modificare il file nella condivisione samba.

[root@server ~]# ls -la /groupshare/shared-file
-rw-rw----. 1 user1 group1 12 May 22 03:19 /groupshare/shared-file
[root@server ~]# cat /groupshare/shared-file
user1
user2

Sommario

Come mostrato possiamo creare una directory per la condivisione di file e condividerla con samba, consentendo la collaborazione di gruppo con l’aiuto di SetGID. Gli utenti all’interno dello stesso gruppo sono in grado di lavorare insieme per accedere e modificare il contenuto nella stessa directory.

Questo post fa parte della nostra serie di guide agli esami per l’esame di Red Hat Certified Engineer (RHCE). Per ulteriori informazioni e post relativi consulta Obiettivi esame RHCE 7.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.