Questa pagina รจ obsoleta, fa riferimento a vecchie versioni di Samba 4
Questi sono appunti preliminari, scritti purtroppo senza avere chiaro come funziona ogni singolo pezzo. Il punto di partenza e` l'howto dal sito di Samba, qui: https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
aptitude install samba winbind smbclient libnss-winbind libpam-winbind
/etc/init.d/samba-ad-dc start
Questa installazione e` stata fatta usando i pacchetti di samba 4.5.2 da van-belle.nl (https://downloads.van-belle.nl/samba4/) ma probabilmente l'elenco dei pacchetti e` lo stesso di samba ufficiale di Debian 8.
La procedura che uso e` parecchio manuale: in pratica scarico dal sito il tgz con dentro tutti i pacchetti, lo piazzo dentro a una directory e poi creo una config di apt che punta a quella directory come se fosse un repository personalizzato. Ovviamente in questo modo non si hannno aggiornamenti automatici, ma visto che sono pacchetti non ufficiali tutto sommato credo che sia meglio avere un controllo molto stretto su cosa si aggiorna, quindi e` perfetto cosi`.
/root/samba/
) il che ci porta ad avere, considerando ache l'architettura, i files sotto a /root/samba/amd64
. (o i386)echo "deb [trusted=yes] file:/root/samba amd64/" > /etc/apt/sources.list.d/samba-van-belle.list
aptitude install samba winbind smbclient libnss-winbind libpam-winbind
/etc/init.d/samba-ad-dc start
sernet-samba-ad
che si porta dietro le dipendenze richiesteSAMBA_START_MODE="ad"
insserv -r sernet-samba-nmbd insserv -r sernet-samba-smbd insserv -r sernet-samba-winbindd
/etc/init.d/sernet-samba-ad
Prima di partire, occorre ricordare che il dominio AD funziona con il DNS, ergo e` esigente e invadente al riguardo. Occorre controllare che l'hostname fully qualified (con anche il dominio) del server dove stiamo installando Samba sia congruente con quello che sara` il nome del dominio AD, e sia risolvibile correttamente sia dal server stesso che dai client che poi aggiungeremo, sia a dritto che a rovescio. Qui le best practice sono tante e non tutte concordano, ma il senso importante e` che il nome del dominio AD NON SI CAMBIA MAI PIU` dopo averlo impostato. Molti suggeriscono di usare un subdomain di un nome di dominio ufficiale e registrato (tipo ad esempio dominiosamba.pippo.it) ma io nell'unica prova che ho fatto ho preferito usare un dominio non registrato pubblicamente, tipo "nomeazienda.locale". Badate bene di NON usare ".local" che e` stato "rubato" da Avahi (Bonjour) e quindi ci sarebbero problemi nella risoluzione dei nomi. Se si prevede di avere una "foresta" (come la chiama MS) di domini correlati, allora occorre considerare bene la scelta dei nomi, ma questo va oltre lo scopo attuale del sottoscritto, che e` di avere un dominio AD e basta.
Essendo una nuova installazione, partiamo da zero.
samba-tool domain provision --use-rfc2307 --interactive --option="interfaces=lo eth0" --option="bind interfaces only=yes"
Se tutto ha funzionato senza errori, si puo` riavviare Samba. (Se usate Sernet su Debian il comando e` /etc/init.d/samba-ad-dc start
; Se usate Samba di van-belle.nl il comando e` /etc/init.d/samba-ad-dc start
)
Il tool di provisioning avra` creato una serie di cose:
Samba vuole risolvere i suoi nomi interni per funzionare, ergo se il server dove e` installato samba usa come DNS un altro DNS che non sia se` stesso, o che non sia in qualche modo configurato per richiedere a Samba i nomi giusti, allora Samba quando si avvia dara` errori nel log (e non so poi se possa funzionare bene).
Il bello di Samba in versione AD e` che e` semplice (sarcasmo).
Quindi, la cosa piu` facile da fare e` impostare in /etc/resolv.conf
il dns per essere localhost (127.0.0.1) prima di avviare Samba.
Avviamo Samba per la prima volta e verifichiamo se ci sono errori nel syslog.
Ntp deve essere installato sul DC (e l'abbiamo gia` detto). Pero` deve anche essere configurato. Occorre che NTPD legga un socket messo a disposizione da Samba (per la quale cosa faremo apposita configurazione), che supporti ntptd_signd (Quello di Debian 7 e` a posto), e ovviamente che sia accessibile dai client del dominio sulla LAN.
Per ottenre questo risultato, dobbiamo:
/var/lib/samba/ntp_signd
, la quale deve poter essere letta dal server NTP, che gira con user e gruppo "ntp". Modifichiamo i permessi come segue:chgrp ntp /var/lib/samba/ntp_signd chmod 750 /var/lib/samba/ntp_signd
/etc/ntp.conf
per leggere questo socket:# aggungere questa riga: ntpsigndsocket /var/lib/samba/ntp_signd # modificare queste righe (mssntp aggiunto in fondo a tutte e due) restrict -4 default kod notrap nomodify nopeer noquery mssntp restrict -6 default kod notrap nomodify nopeer noquery mssntp
ntpd[30129]: MS-SNTP signd operations currently block ntpd degrading service to all clients.
* Per verificare se un client legge NTP, eseguire un CMD come amministratore e usare il comando
w32tm /resync
Per poter vedere correttamente gli utenti di Samba dal sistema (sulla macchina stessa del DC AD), usando samba 4.2 o superiore, e` sufficiente verificare che winbindd stia girando (ps ax) e poi modificare il file /etc/nsswitch.conf
come segue:
passwd: compat winbind group: compat winbind
(occorre che le librerie libnss-winbind libpam-winbind siano installate)
I test minimali li ho presi direttamente dall' HOWTO.
Prima di tutto il test con smbclient, che si fa cosi`:
smbclient -L localhost -U%
L'output e` tipo questo:
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.x.y) Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y] Server Comment --------- ------- Workgroup Master --------- -------
Poi l'accesso a uno share:
smbclient //localhost/netlogon -UAdministrator -c 'ls'
L'output e` tipo questo:
Enter Administrator's password: passw0rd Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y] . D 0 Sat Jul 5 08:40:00 2014 .. D 0 Sat Jul 5 08:40:00 2014 49386 blocks of size 524288. 42093 blocks available
Passo successivo il test del DNS. Queste query devono dare tutte risposte sensate e mai un not found.
host -t SRV _ldap._tcp.<dominio.tld>. host -t SRV _kerberos._udp.<dominio.tld>. host -t A <hostname FQDN del domain controller>
Nell' HOWTO si parla anche di un test con Kerberos, senza pero` dire nulla di piu`. A quanto ho capito io non e` necessario installare il client Kerberos sul server AD, se non per il test. Magari ho capito male. In ogni caso, la procedura per installare il client Kerberos e`:
aptitude install heimdal-clients cd /etc/ mv krb5.conf krb5.conf.originale ln -s /var/lib/samba/private/krb5.conf /etc/krb5.conf
La procedura di test per Kerberos richiede due comandi, kinit e klist:
kinit administrator@DOMAIN.LOCALE
Notare che il dominio deve essere in maiuscolo! 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
wbinfo -u administrator krbtgt guest wbinfo -g enterprise read-only domain controllers domain admins domain users domain guests domain computers domain controllers schema admins enterprise admins group policy creator owners read-only domain controllers dnsupdateproxy
id administrator uid=0(root) gid=0(root) groups=0(root) id guest uid=3000011(guest) gid=3000012(domain guests) groups=3000012(domain guests),3000011(guest),3000015(BUILTIN\guests) getfacl /var/lib/samba/sysvol getfacl: Removing leading '/' from absolute path names # file: var/lib/samba/sysvol # owner: root # group: BUILTIN\134administrators user::rwx user:root:rwx user:BUILTIN\134administrators:rwx group::rwx group:BUILTIN\134administrators:rwx group:BUILTIN\134server\040operators:r-x group:3000002:rwx group:3000003:r-x mask::rwx other::--- default:user::rwx default:user:root:rwx default:user:BUILTIN\134administrators:rwx default:group::--- default:group:BUILTIN\134administrators:rwx default:group:BUILTIN\134server\040operators:r-x default:group:3000002:rwx default:group:3000003:r-x default:mask::rwx default:other::---