Installare e configurare un file server Samba integrato con Active Directory

E’ facile creare una condivisione di tipi Windows (SMB/CIFS) e condividerla usando permessi locali come l’accesso anonimo/guest oppure un utente creato ad hoc sul server Linux, ma la cosa diventa più difficile se vogliamo creare un file server su Linux e usare gli utenti di Windows Active Directory e i loro permessi.
Il motivo è alquanto semplice: Linux non è nato per interagire con Microsoft Active Directory.

Sfortunatamente tutte le soluzioni ci portano ad almeno un compromesso, per cui se volete una soluzione semplice, facile da gestire e funzionante al 100%, scegliete di fare un file server Windows.
Dopo avervi spaventato e consigliato caldamente a rivolgervi a Windows per creare share per Windows, vi spiego come farle su Linux.

Brevemente, la prima cosa da fare è installare Samba, poi unirsi (join) al dominio Microsoft dove ci sono gli utenti che accederanno alle risorse e infine configurare la share con i permessi opportuni.

Requisiti e scenario

Il file system dove andremo a creare la cartella condivisa deve permettere l’uso delle ACL e degli attributi estesi (es. XFS o EXT4 con opzioni di mount diverse dal default); non sono necessari una partizione o un logical volume dedicati, tuttavia l’uso di uno di questi ci permette di limitare lo spazio disco a disposizione della share senza scomodare tecnologie come le quote.

Il nostro server Linux di riferimento è una CentOS 8 (la guida funziona anche per RHEL 8 e Oracle Linux 8), queste distribuzioni mettono a disposizione una versione recente di Samba che ci permette di ridurre i parametri di configurazione.

Nel esempio, il dominio di cui il nostro file server diventerà membro si chiama greensys.local, il server si chiama LinuxFiles (il suo hostname LinuxFiles) è per cui abbiate cura di sostituire questi nomi con il vostro dominio Microsoft e con l’hostname del vostro file server.

Sarebbe bene impostare un indirizzo IP statico al server in quanto è necessario che la rete sia sempre disponibile prima della partenza del servizio samba.

Verifichiamo che i dns del file server corrispondano a quelli del dominio Microsoft.

Mettere nel dominio il file server Samba integrato con Active Directory

Installiamo il software Samba e le utility per fare join al dominio:

yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients samba-winbind samba-common-tools samba-winbind-krb5-locator samba

Una volta installato il software facciamo una copia di salvataggio del file smb.conf

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Poi verifichiamo tramite il comando:

realm discover greensys.local

se effettivamente raggiungiamo il dominio.

Facciamo dunque join al dominio (verrà richiesta la password dell’utente Administrator):

realm join --membership-software=samba --client-software=winbind greensys.local

Se non possiamo usare l’utente Administrator del dominio, ne possiamo specificare un altro con l’opzione -U (realm join -v [-U user] realm-name).

Verifichiamo che il servizio winbind sia attivo (esso dovrà attivarsi sempre prima del servizio samba) riportando active (running).

systemctl status winbind

Verifichiamo per esempio quali sono i permessi dell’utente Administrator del dominio (dove greensys è il nome del vostro dominio):

getent passwd "greensys\administrator"

Attiviamo dunque il servizio samba (smb)

systemctl enable --now smb

Con la precedente istruzione abbiamo completato la fare di join a dominio che come potete notare non richiede un riavvio del server.

Nel prossimo articolo il resto della configurazione.