Samba viene utilizzato dall'amministratore di sistema per superare il problema dell'interoperabilità in un ambiente misto in cui si dispone sia di Linux che di Windows. Fornisce una piattaforma comune per Windows e Linux per avere uno spazio di condivisione comune.
Il controller di dominio è un servizio utilizzato per l'amministrazione centralizzata di utenti, gruppi o qualsiasi oggetto nella rete. Questo servizio ci consente di gestire, autenticare e proteggere l'accesso degli utenti e i relativi dati.
Questo tutorial spiega come possiamo configurare Samba su Linux come controller di dominio primario.
1. Imposta il nome host corretto
Assicurati di aver impostato il nome host e l'ip statico appropriati. Se stai utilizzando un indirizzo IP interno e se desideri accedervi da Internet, imposta le regole NAT appropriate sul tuo firewall.
In questo tutorial utilizzerà tgs.example.com come nome host.
# vi /etc/sysconfig/network HOSTNAME=tgs.example.com
Assicurati che l'indirizzo IP statico sia impostato correttamente nel file ifcfg-eth0.
# vi /etc/sysconfig/network-script/ifcfg-eth0 IPADDR=192.168.101.1 NETMASK=255.255.255.0
Inoltre, assegna il gateway e il dns di conseguenza nel tuo file /etc/sysconfig/network e /etc/resolv.conf.
Verifica che il tuo file /etc/hosts abbia una voce simile alla seguente.
# vi /etc/hosts 192.168.101.1 tgs.example.com tgs
Inoltre, assicurati che il servizio NTP sia configurato e funzioni correttamente su questo server.
2. Installa Samba dal sorgente
Su CentOS, per impostazione predefinita i pacchetti samba non verranno installati per il tipo di installazione minima.
Innanzitutto, installa i seguenti pacchetti dipendenti.
# yum install glibc glibc-devel gcc python* libacl-devel krb5-workstation krb5-libs pam_krb5 git-core openldap-devel
Quindi, scarica il sorgente samba come mostrato di seguito.
# git clone git://git.samba.org/samba.git sambaserver
I file verranno scaricati nella directory sambaserver. Installa il server samba come mostrato di seguito.
cd sambaserver ./configure --enable-debug --enable-selftest make make install
Samba verrà installato nella posizione predefinita /usr/local/samba/bin. Vedrai diverse utility client samba installate in questa directory.
# cd /usr/local/samba/bin/ # ls cifsdd ldbsearch ntdbrestore regshell smbcquotas tdbbackup dbwrap_tool locktest ntdbtool regtree smbget tdbdump eventlogadm masktest ntlm_auth rpcclient smbpasswd tdbrestore gentest ndrdump oLschema2ldif samba-tool smbspool tdbtool ldbadd net pdbedit sharesec smbstatus testparm ldbdel nmblookup pidl smbcacls smbtar wbinfo ldbedit nmblookup4 profiles smbclient smbta-util ldbmodify ntdbbackup regdiff smbclient4 smbtorture ldbrename ntdbdump regpatch smbcontrol smbtree
3. Imposta la fornitura del dominio
Per avviare il provisioning del dominio, eseguire lo strumento samba come mostrato di seguito. Questo preleverà il nome host e il nome di dominio predefiniti dai file di configurazione.
# /usr/local/samba/bin/samba-tool domain provision Realm [EXAMPLE.COM]: Domain [EXAMPLE]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [125.22.47.125]: 8.8.8.8 Administrator password: Retype password: ... ... Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=example,DC=com Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: tgs NetBIOS Domain: EXAMPLE DNS Domain: example.com DOMAIN SID: S-1-5-21-2869186506-3515775153-2841826798
4. Avvia il servizio Samba
Avvia il servizio samba, come mostrato di seguito.
/usr/local/samba/sbin/samba
Aggiungi la seguente voce al file rc.local per assicurarti che il servizio samba si avvii automaticamente durante l'avvio del sistema.
# echo /usr/local/samba/sbin/samba >> /etc/rc.d/rc.local # cat /etc/rc.d/rc.local touch /var/lock/subsys/local /usr/local/samba/sbin/samba
5. Controlla la versione Samba
Puoi verificare la versione di samba usando il comando samba o smbclient come mostrato di seguito.
# /usr/local/samba/sbin/samba -V Version 4.2.0pre1-GIT-913b2a1 # /usr/local/samba/bin/smbclient -V Version 4.2.0pre1-GIT-913b2a1
Il comando seguente visualizzerà tutte le condivisioni Samba attualmente disponibili.
# /usr/local/samba/bin/smbclient -L localhost -U% Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.2.0pre1-GIT-913b2a1) Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Server Comment --------- ------- Workgroup Master --------- -------
Verifica di essere in grado di accedere utilizzando il nome utente e la password dell'amministratore.
# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator -c 'ls' Enter administrator's password: Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] . D 0 Fri Feb 21 15:06:15 2014 .. D 0 Fri Feb 21 15:06:28 2014 57901 blocks of size 8388608. 54372 blocks available
6. Verifica i domini
Ora controlliamo se il dominio funziona come previsto. Controlla il record SRV e A come mostrato di seguito.
# host -t SRV _ldap._tcp.example.com _ldap._tcp.example.com has SRV record 0 100 389 tgs.example.com. # host -t SRV _kerberos._udp.example.com _kerberos._udp.example.com has SRV record 0 100 88 tgs.example.com. # host -t A tgs.example.com tgs.example.com has address 192.168.101.1
Usa il comando samba-tool per verificare il nome del reame come mostrato di seguito.
# /usr/local/samba/bin/samba-tool testparm --suppress-prompt | grep realm realm = EXAMPLE.COM
7. Configura Kerberos
Copia il file di esempio krb5.conf nella directory /etc.
cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf
Imposta default_realm sul tuo nome di dominio. In questo caso, lo imposteremo su example.com
# cat /etc/krb5.conf [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = true
Usa il comando kinit per assicurarti che Kerberos sia configurato correttamente come mostrato di seguito.
# kinit [email protected] Password for [email protected]: Warning: Your password will expire in 41 days on Fri Apr 4 15:06:25 2014
Infine, puoi utilizzare lo strumento di amministrazione remota di Windows per connetterti al server Samba e usarlo come controller di dominio.
In caso di problemi durante il processo di cui sopra, assicurati di aggiornare il sistema aggiornando tutti i pacchetti. Puoi anche disabilitare SELinux temporaneamente e rivedere audit.log per eventuali messaggi di errore relativi a SELinux. Inoltre, assicurati che le tue regole IPTables non stiano bloccando le porte richieste da Samba per comunicare tra i server.