Samba è una reimplementazione libera e open-source del protocollo di condivisione file di rete SMB/CIFS che permette agli utenti finali di accedere a file, stampanti e altre risorse condivise.
In questo tutorial, mostreremo come installare Samba su CentOS 7 e configurarlo come server autonomo per fornire la condivisione di file tra diversi sistemi operativi su una rete.
Creeremo le seguenti condivisioni e utenti Samba.
Utenti:
- sadmin – Un utente amministrativo con accesso in lettura e scrittura a tutte le condivisioni.
- josh – Un utente normale con la sua condivisione privata di file.
Condivisioni:
- utenti – Questa condivisione sarà accessibile con permessi di lettura/scrittura da tutti gli utenti.
- josh – Questa condivisione sarà accessibile con permessi di lettura/scrittura solo dagli utenti josh e sadmin.
Le condivisioni dei file saranno accessibili da tutti i dispositivi della tua rete. Più avanti nel tutorial, forniremo anche istruzioni dettagliate su come connettersi al server Samba da client Linux, Windows e macOS.
Prequisiti #
Prima di iniziare, assicuratevi di aver effettuato l’accesso al vostro sistema CentOS 7 come utente con privilegi sudo.
Installazione di Samba su CentOS #
Samba è disponibile nei repository standard di CentOS. Per installarlo sul tuo sistema CentOS esegui il seguente comando:
sudo yum install samba samba-client
Una volta completata l’installazione, avvia i servizi Samba e abilitali ad avviarsi automaticamente all’avvio del sistema:
sudo systemctl start smb.service
sudo systemctl start nmb.service
sudo systemctl enable smb.service
sudo systemctl enable nmb.service
Il servizio smbd
fornisce servizi di condivisione file e stampa e ascolta le porte TCP 139 e 445. Il servizio nmbd
fornisce servizi di denominazione NetBIOS su IP ai client e ascolta sulla porta UDP 137.
Configurazione del Firewall #
Ora che Samba è installato e funzionante sulla tua macchina CentOS, avrai bisogno di configurare il tuo firewall e aprire le porte necessarie. Per farlo, eseguite i seguenti comandi:
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --zone=public --add-service=samba
Creazione degli utenti e della struttura della directory di Samba #
Per una più facile manutenibilità e flessibilità invece di usare le directory home standard (/home/user
) tutte le directory e i dati di Samba saranno situati nella directory /samba
.
Iniziate creando la directory /samba
:
sudo mkdir /samba
Create un nuovo gruppo chiamato sambashare
. Più tardi aggiungeremo tutti gli utenti Samba a questo gruppo.
sudo groupadd sambashare
Imposta la proprietà del gruppo della directory /samba
a sambashare
:
sudo chgrp sambashare /samba
Samba usa il sistema di autorizzazioni degli utenti e dei gruppi di Linux ma ha il suo meccanismo di autenticazione separato dall’autenticazione standard di Linux. Creeremo gli utenti usando lo strumento standard Linux useradd
e poi imposteremo la password dell’utente con l’utilità smbpasswd
.
Come abbiamo detto nell’introduzione, creeremo un utente regolare che avrà accesso alla sua condivisione privata di file e un account amministrativo con accesso in lettura e scrittura a tutte le condivisioni sul server Samba.
Creazione di utenti Samba #
Per creare un nuovo utente di nome josh
, usate il seguente comando:
sudo useradd -M -d /samba/josh -s /usr/sbin/nologin -G sambashare josh
Le opzioni useradd
hanno il seguente significato:
Crea la home directory dell’utente e imposta la proprietà della directory all’utente josh
e al gruppo sambashare
:
sudo mkdir /samba/josh
sudo chown josh:sambashare /samba/josh
Il seguente comando aggiungerà il bit setgid alla directory /samba/josh
in modo che i file appena creati in questa directory ereditino il gruppo della directory madre. In questo modo, non importa quale utente crei un nuovo file, il file avrà group-owner di sambashare
. Per esempio, se non impostate i permessi della directory a 2770
e l’utente sadmin
crea un nuovo file, l’utente josh
non sarà in grado di leggere/scrivere su questo file.
sudo chmod 2770 /samba/josh
Aggiungi l’account utente josh
al database Samba impostando la password utente:
sudo smbpasswd -a josh
Vi verrà richiesto di inserire e confermare la password utente.
New SMB password:Retype new SMB password:Added user josh.
Una volta impostata la password, abilitate l’account Samba digitando:
sudo smbpasswd -e josh
Enabled user josh.
Per creare un altro utente ripetete la stessa procedura della creazione dell’utente josh
.
In seguito, creiamo un utente e un gruppo sadmin
. Tutti i membri di questo gruppo avranno i permessi amministrativi. Più tardi, se volete concedere i permessi amministrativi ad un altro utente, aggiungetelo semplicemente al gruppo sadmin
.
Create l’utente amministrativo digitando:
sudo useradd -M -d /samba/users -s /usr/sbin/nologin -G sambashare sadmin
Il comando precedente creerà anche un gruppo sadmin
e aggiungerà l’utente ad entrambi i gruppi sadmin
e sambashare
.
Imposta una password e abilita l’utente:
sudo smbpasswd -a sadmin
sudo smbpasswd -e sadmin
In seguito, crea la directory di condivisione Users
:
sudo mkdir /samba/users
Imposta la proprietà della directory all’utente sadmin
e al gruppo sambashare
:
sudo chown sadmin:sambashare /samba/users
Questa directory sarà accessibile da tutti gli utenti autenticati. Il seguente comando configura l’accesso in scrittura/lettura ai membri del gruppo sambashare
nella directory /samba/users
:
sudo chmod 2770 /samba/users
Configurazione delle condivisioni Samba #
Apri il file di configurazione Samba e aggiungi le sezioni:
sudo nano /etc/samba/smb.conf
Le opzioni hanno i seguenti significati:
-
e
– I nomi delle azioni che userete al momento del login.
-
path
– Il percorso della condivisione. -
browseable
– Se la condivisione deve essere elencata nella lista delle azioni disponibili. Impostando suno
gli altri utenti non saranno in grado di vedere la condivisione. -
read only
– Se gli utenti specificati nella listavalid users
sono in grado di scrivere su questa condivisione. -
force create mode
– Imposta le autorizzazioni per i file appena creati in questa condivisione. -
force directory mode
– Imposta le autorizzazioni per le directory appena create in questa condivisione. -
valid users
– Una lista di utenti e gruppi che sono autorizzati ad accedere alla condivisione. I gruppi sono preceduti dal simbolo@
.
Per maggiori informazioni sulle opzioni disponibili vedere la pagina di documentazione del file di configurazione di Samba.
Una volta fatto, riavviare i servizi Samba con:
sudo systemctl restart smb.service
sudo systemctl restart nmb.service
Nelle sezioni seguenti, vi mostreremo come connettersi a una condivisione Samba da client Linux, macOS e Windows.
Connettersi a una condivisione Samba da Linux #
Gli utenti Linux possono accedere alla condivisione samba dalla riga di comando, usando il file manager o montare la condivisione Samba.
Utilizzando il client smbclient #
smbclient
è uno strumento che permette di accedere a Samba dalla riga di comando. Il pacchetto smbclient
non è preinstallato sulla maggior parte delle distro Linux, quindi dovrai installarlo con il gestore dei pacchetti della tua distribuzione.
Per installare smbclient
su Ubuntu e Debian eseguire:
sudo apt install smbclient
Per installare smbclient
su CentOS e Fedora eseguire:
sudo yum install samba-client
La sintassi per accedere a una condivisione Samba è la seguente:
mbclient //samba_hostname_or_server_ip/share_name -U username
Per esempio, per connettersi a una condivisione chiamata josh
su un server Samba con indirizzo IP 192.168.121.118
come utente josh
si dovrebbe eseguire:
smbclient //192.168.121.118/josh -U josh
Vi verrà richiesto di inserire la password dell’utente.
Enter WORKGROUP\josh's password:
Una volta inserita la password sarete collegati all’interfaccia della linea di comando Samba.
Try "help" to get a list of possible commands.smb: \>
Montaggio della condivisione Samba #
Per montare una condivisione Samba su Linux è necessario installare il pacchetto cifs-utils
.
Su Ubuntu e Debian eseguire:
sudo apt install cifs-utils
Su CentOS e Fedora eseguire:
sudo yum install cifs-utils
In seguito, creare un punto di montaggio:
sudo mkdir /mnt/smbmount
Montare la condivisione utilizzando il seguente comando:
sudo mount -t cifs -o username=username //samba_hostname_or_server_ip/sharename /mnt/smbmount
Per esempio, per montare una quota chiamata josh
su un server Samba con indirizzo IP 192.168.121.118
come utente josh
sul punto di montaggio /mnt/smbmount
, dovrete eseguire:
sudo mount -t cifs -o username=josh //192.168.121.118/josh /mnt/smbmount
Vi verrà richiesto di inserire la password dell’utente.
Password for josh@//192.168.121.118/josh: ********
Utilizzando la GUI #
Files, il file manager predefinito in Gnome ha un’opzione integrata per accedere alle condivisioni Samba.
- Aprire Files e cliccare su “Altre posizioni” nella barra laterale.
- In “Connetti al server”, inserire l’indirizzo della condivisione Samba nel seguente formato
smb://samba_hostname_or_server_ip/sharename
. - Clicca su “Connetti” e apparirà la seguente schermata:
- Seleziona “Utente Registrato”, inserisci il nome utente e la password Samba e clicca su “Connetti”.
- Vengono mostrati i file sul server Samba.
Collegamento a una condivisione Samba da macOS #
In macOS, puoi accedere alle condivisioni Samba sia dalla riga di comando che usando il file manager predefinito di macOS, Finder. I seguenti passi mostrano come accedere alla condivisione utilizzando il Finder.
- Aprire “Finder”, selezionare “Vai” e fare clic su “Connetti a”.
- In “Connetti a”, inserire l’indirizzo della condivisione Samba nel seguente formato
smb://samba_hostname_or_server_ip/sharename
.
- Clicca “Connetti” e apparirà la seguente schermata:
- Seleziona “Utente Registrato”, inserisci il nome utente e la password Samba e clicca “Connetti”.
- I file sul server Samba saranno mostrati.
Connettersi a una condivisione Samba da Windows #
Gli utenti Windows hanno anche la possibilità di connettersi alla condivisione Samba sia da linea di comando che da GUI. I passi seguenti mostrano come accedere alla condivisione usando Windows File Explorer.
- Aprire File Explorer e nel pannello di sinistra cliccare con il tasto destro su “Questo PC”.
- Selezionare “Scegliere una posizione di rete personalizzata” e poi cliccare “Avanti”.
- In “Internet o indirizzo di rete”, inserire l’indirizzo della condivisione Samba nel seguente formato
\samba_hostname_or_server_ip\sharename
.
- Clicca “Avanti” e ti verrà richiesto di inserire le credenziali di accesso come mostrato di seguito:
- Nella finestra successiva, puoi digitare un nome personalizzato per la posizione di rete. Quello predefinito sarà scelto dal server Samba.
- Clicca “Avanti” per passare all’ultima schermata della procedura guidata di configurazione della connessione.
- Clicca “Fine” e i file sul server Samba saranno mostrati.
Conclusione #
In questo tutorial, hai imparato come installare un server Samba su CentOS 7 e creare diversi tipi di condivisioni e utenti. Ti abbiamo anche mostrato come connetterti al server Samba da dispositivi Linux, macOS e Windows.
.