Samba 4 come member server

Questa configurazione è stata provada su Debian 12 / Devuan Daedalus

Configurazione di una macchina con Samba4 che sia membro di un dominio AD. Il domain controller in questo caso e` Samba, ma dovrebbe funzionare anche con un DC Windows (non ho provato).

Riferimento al Wiki di Samba: https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member

Prerequisiti

Installazione di Samba

Configurazione di NTP

NTP deve essere configurato per prendere l'ora corretta dal DC o da un altro server NTP che sia in sincro con il DC. Probabilmente usare la config di default va bene comunque, visto che si presume che l'ora esatta sia giusta anche se la prendo da un server NTP pubblico. Tuttavia se vogliamo possiamo configurare NTP per usare il DC come riferimento. (vedi https://wiki.samba.org/index.php/Time_Synchronisation)

Per fare questa configurazione, modifichiamo il file /etc/ntpd.conf in modo da eliminare i server ntp pubblici e mettere come server NTP il domain contoroller (o i domain controller se sono piu` di uno). Questa configurazione è basata su ntpd così come è impostato in Devuan Beowulf. Di fatto ho tolto le righe "pool" che fanno riferimenti ai server ntp di Debian, e ho aggiunto le righe che fanno riferimento al DC come server NTP:

# Aggiunta per Samba:
server dc01.domain.locale         iburst prefer
#server DC02.domain.locale        iburst
tinker panic 0

# commentate queste righe:
#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst

Configurazione di Kerberos

Modificare il file /etc/krb5.conf come segue: (al posto di "DOMAIN.LOCALE" ovviamente mettete il vostro dominio AD, in maiuscolo. Togliete tutto il resto, non deve rimanere altro che questo.

[libdefaults]
        default_realm = DOMAIN.LOCALE
        dns_lookup_realm = false
        dns_lookup_kdc = true

Test del DNS

Test di Kerberos

La procedura di test per Kerberos richiede due comandi, kinit e klist:

kinit administrator@DOMAIN.LOCALE

Notare che il dominio deve essere in maiuscolo (e credo possa essere omesso, dovrebbe risolverlo da solo) Viene chiesta la password di administrator.

klist

Viene mostrato un output tipo questo:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SAMDOM.EXAMPLE.COM

Valid starting     Expires            Service principal
07/05/14 23:20:17  07/06/14 09:20:17  krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM
        renew until 07/06/14 23:20:15

Configurazione di nsswitch

Per poter vedere correttamente gli utenti di del dominio come utenti di sistema occorre modificare il file /etc/nsswitch.conf come segue: (potrebbe essere che troviate "compat" al posto di "files", in quel caso mettete "compat winbind")

passwd:         files winbind
group:          files winbind

(occorre che le librerie libnss-winbind libpam-winbind siano installate)

Preparazione (pulizia) di Samba

Configurazione di Samba

Nota bene: Esistono tre (per il momento) sistemi per mappare gli ID di user e gruppi di Linux (necessari per le ACL) sugli ID nativi di AD. Questa configurazione si basa sul backend "rid". Per ulteriori informazioni su quali usare a seconda delle vostre esigenze, potete andare qui: https://wiki.samba.org/index.php/Identity_Mapping_Back_Ends

Prima di tutto dobbiamo creare un file smb.conf adeguato.

[global]

   # il workgroup e` la parte iniziale del realm, ovvero del dominio AD:
   workgroup = DOMINIO
   realm = DOMINIO.LOCALE

   # l'autenticazione avviene su dominio AD
   security = ADS
   winbind refresh tickets = Yes
   dedicated keytab file = /etc/krb5.keytab
   kerberos method = secrets and keytab


   # Default ID mapping configuration for local BUILTIN accounts
   # and groups on a domain member. The default (*) domain:
   # - must not overlap with any domain ID mapping configuration!
   # - must use a read-write-enabled back end, such as tdb.
   idmap config * : backend = tdb
   idmap config * : range = 3000-7999

   # Mapping degli ID per il dominio AD a cui andiamo a joinare il server.
   # notare che il dominio è indicato per nome (ML). Se abbiamo più domini,
   # dovremo ripetere questa config usando ovviamente un range che NON sia il medesimo.
   # questo mapping ci fornisce spazio per 999.999-10.000 = 989.999 utenti o gruppi.
   # NOTA: un utente cancellato NON RECUPERA SPAZIO, quindi ogni modifica spreca comunque un ID
   idmap config DOMINIO : backend = rid
   idmap config DOMINIO : range = 10000-999999

   # Template settings for login shell and home directory
   # Gli utenti del dominio sono utenti validi per la macchina locale, e devono
   # avere una shell e una home. Qui definisco quale shell e quale home hanno.
   template shell = /bin/bash
   template homedir = /home/%U

   
   # moduli e configurazioni necessarie per gestire i permessi sul file system
   # in modo compatibile con Windows
   vfs objects = acl_xattr
   map acl inherit = Yes
   store dos attributes = Yes
   

   # solo per testing, enumera tutti i gruppi e users, è lento in produzione:
   winbind enum users = yes
   winbind enum groups = yes

   # disabilito totalmente la gestione delle stampanti
   load printers = no
   printing = bsd
   printcap name = /dev/null
   disable spoolss = yes

Poi creiamo il file /etc/samba/user.map e ci mettiamo dentro:

!root = DOMINIO\Administrator

Una volta creati i files di configurazione, possiamo verificare di non avere fatto errori di battiutura usando il comando testparm, che ci segnala eventuali voci di configurazione errate.

Join al dominio

Ora dovrei poter effettivamente joinare il dominio con il mio member server:

net ads join -U administrator

L'output dovrebbe essere una cosa del tipo:

Enter administrator's password:
Using short domain name -- DOMINIO
Joined 'FILESERVER01' to dns domain 'dominio.locale'

Avviare Samba

Notare che qui NON USIAMO samba-ad-dc ma i singoli componenti. Questo perché questa macchina NON È un domain controller. (tranquilli, all'avvio della macchina partono le cose giuste)

/etc/init.d/smbd start
/etc/init.d/nmbd start
/etc/init.d/winbind start

Testare la connessione con il domain controller

Ora testiamo approfonditamente la connessione con il domain controller:

wbinfo --ping-dc

Dovrebbe dare questo output:

checking the NETLOGON for domain[ML] dc connection to "dc01.dominio.locale" succeeded

I seguenti due comandi dovrebbero elencare utenti e gruppi del dominio (posto che abbiamo attivato in smb.conf winbind enum groups = Yes e winbind enum users = Yes)

wbinfo -u
wbinfo -g

I seguenti comandi testano l'integrazione di nsswitch con winbind, mostrando id e gruppi del dominio: (notare il doppio backslash!)

id DOMINIO\\administrator
getent passwd DOMINIO\\adminstrator
getent group  "DOMINIO\\domain users"

Configurare gli share

Se tutto ha funzionato fino a qui, dovremmo essere in grado di aggiungere a smb.conf la definizione di uno o più share, e gestirli da Windows.

Samba4/ConfigMemberServer (last edited 2024-08-16 15:35:24 by Kurgan)