configurare samba

Era da qualche tempo che desideravo mettere un po’ in ordine gli appunti su come un sistema GNU/Linux per farlo operare come PDC (Primary Domain Controller). Sul web sono presenti diverse guide spesso però incomplete. Questa guida cerca di illustrare tutti i passaggi necessari alla realizzazione del PDC.

Per fare questo è necessario utilizzare Samba.

La versione attualmente disponibile è la 3 che supporta le principali funzionalità per gestire un PDC. E’ attualmente in via di sviluppo la versione 4 che, oltre ad essere implementato con tecnologie ed una struttura più moderna, provvederà a colmare alcune lacune come ad esempio il supporto completo ad AD (Active Directory).

Attualmente è quindi possibile:

  • Emulare un PDC in stile NT4
  • Effettuare login sul dominio per client Windows NT/2000/XP
  • Gestire la sicurezza a livello utente per client Windows 9x/ME
  • Configurare i profili in modalità Roaming
  • Browse list e master browser
  • Gestire le policy di sistema in stile NT4
  • Possibilità di ottenere la lista degli utenti/gruppi presenti sul PDC

Le funzionalità ancora non supportate sono invece:

  • Possibilità di fare da Domain Controller in un dominio ADS (2k/2k3)
  • Utilizzo come BDC (Backup Domain Controller) in un dominio NT4 con PDC Windows

Per la configurazione del PDC ho scelto di utilizzare Ubuntu come distribuzione. Oltre alla configurazione di Samba è necessario configurare adeguatamente il resto del sistema. In futuro vorrei provare a gestire l’autenticazione tramite OpenLDAP. Per il momento con questa guida gli utenti saranno gestiti come utenti del sistema GNU/Linux ospite.
In questa guida inoltre i profili saranno configurati in roaming.

Per prima cosa bisogna accertarsi di avere installato tutto il software necessario:

apt-get install samba samba-common libcupsys2 libkrb53 winbind smbclient

Solitamente su un sistema Ubuntu (Dapper Drake o seguenti) dovrebbe essere già installato tutto di default tranne winbind. Io ad esempio ho testato il sistema con la distribuzione Kubuntu Edgy Eft (knot-3).

Per configurare Samba si deve editare il file /etc/samba/smb.conf nel seguente modo:
(Le righe che cominciano con un “#” indicano un commento)

[global]
# ‘workgroup’ indica il nome del dominio per la rete windows.
workgroup = NOME_DEL_DOMINIO
# ‘netbios name’ deve essere uguale all’hostname di sistema.
netbios name = NOME_SERVER
server string = %h STRINGA DI DESCRIZIONE – %v VERSIONE
passdb backend = tdbsam
security = user
username map = /etc/samba/smbusers
name resolve order = wins bcast hosts
domain logons = yes
domain master = yes
preferred master = yes
local master = yes
os level = 64
wins support = yes

encrypt passwords = yes
# ‘host allow’ specifica da quali IP o reti è possibile fare il login
hosts allow = 127.0.0.1 192.168.0.0/255.255.255.0

printcap name = CUPS
printing = CUPS

# ‘logon drive’ indica la letterà dell’unita con la quale sarà identificata la condivisione Samba negli ambienti Windows.
logon drive = S:
# ‘logon script’ serve per specificare uno script batch che viene eseguito quando una workstation Windows effettua il login.
logon script = scripts/logon.bat
logon path = \\NOME_SERVER\profiles\%U
# ‘logon home’ definisce la posizione del file .profile (per client Win9x/ME) in \\nomeserver\nomeutente
logon home = \\%L\%U\

add user script = /usr/sbin/useradd -m %u
delete user script = /usr/sbin/userdel -r %u
add group script = /usr/sbin/groupadd %g
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/sbin/usermod -G %g %u
# Aggiunge automaticamente al sistema l’account di una nuova macchina che entra nel dominio, attenzione: il gruppo ‘clientpc’ deve essere già presente nel sistema.
add machine script = /usr/sbin/useradd -d /dev/null -g clientpc -s /bin/false -M %u

idmap uid = 15000-20000
idmap gid = 15000-20000

passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
passwd chat debug = yes

# ‘unix password sync’ serve per mantenere sincronizzate le password di Samba e degli account Linux
# Attenzione, vengono sincronizzate le password Linux rispetto le password Samba,
# questa procedura non funziona al contrario:
# se si cambia con passwd una password Unix,
# si dovrà cambiarla a mano con smbpasswd per tenere
# sincronizzata la password Unix con la password Samba.
unix password sync = yes

# set the loglevel
log level = 3

[homes]
comment = Home directory
valid users = %S
read only = no
browsable = no
writeable = yes

[printers]
comment = All Printers
path = /var/spool/samba
printable = yes
guest ok = yes
browsable = no

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
admin users = Administrator
valid users = %U
read only = yes
browseable = no

[profiles]
comment = User profiles
path = /home/samba/profiles
valid users = %U
create mode = 0600
directory mode = 0700
writable = yes
browsable = no

Dopo aver correttamente configurato Samba, effettuando le eventuali modifiche in base alle proprie esigenze è necessario creare le directory per i profili di dominio.

mkdir /home/samba
mkdir /home/samba/netlogon
mkdir /home/samba/profiles
mkdir /var/spool/samba
chmod 777 /var/spool/samba/
chown -R root:users /home/samba/
chmod -R 771 /home/samba/

A questo punto si può riavviare il servizio Samba in modo da caricare la nuova configurazione.

/etc/init.d/samba restart

Ora che Samba è correttamente configurato è necessario impostare qualche altro parametro nel server. Si deve modificare il file /etc/nsswitch.conf cambiando la linea:

hosts: files dns

con:

hosts: files wins dns

Si devono poi aggiungere tutti i computer del gruppo di lavoro/dominio nel file /etc/hosts:

# Indirizzo del server
XXX.XXX.XXX.XXX NOME_SERVER
# Elenco degli indirizzi dei PC client
YYY.YYY.YYY.YYY NOME_CLIENT_1
WWW.WWW.WWW.WWW NOME_CLIENT_2

ZZZ.ZZZ.ZZZ.ZZZ NOME_CLIENT_n

Dopo aver configurato quanto riguarda la risoluzione dei nomi nella rete è necessario configurare gli utenti del sistema. L’utente root si può usare com utente amministratore di Samba. Per fare ciò è necessario aggiungerlo agli utenti di samba:

smbpasswd -a root

Si può creare un alias dell’utente root usando il nome utente Administrator editando il file /etc/samba/smbusers ed aggiungendo la linea:

echo “root = Administrator” > /etc/samba/smbusers

Si può testare il corretto funzionamento del sistema tramite il seguente comando:

smbclient -L localhost -U%

L’output dovrebbe essre qualcosa del tipo:

Domain=[NOME_DOMINIO] OS=[Unix] Server=[Samba 3.0.22]

Sharename Type Comment
——— —- ——-
IPC$ IPC IPC Service
ADMIN$ IPC IPC Service

Domain=[NOME_DOMINIO] OS=[Unix] Server=[Samba 3.0.22]

Server Comment
——— ——-
NOME_SERVER DESCRIZIONE_SERVER

Workgroup Master
——— ——-
NOME_DOMINIO NOME_SERVER

Se tutto è corretto si possono configurare i gruppi del sistema Linux con i gruppi per windows:

net groupmap modify ntgroup=”Domain Admins” unixgroup=root
net groupmap modify ntgroup=”Domain Users” unixgroup=users
net groupmap modify ntgroup=”Domain Guests” unixgroup=nogroup

Ora il sistema base è configurato. Si può passare alla fase di gestione degli utenti, delle condivisioni e delle stampanti.

Per aggiungere degli utenti al dominio gestito da Samba bisognerà prima creare l’utente nel sistema GNU/Linux:

useradd NOME_UTENTE -m -G GRUPPO_UTENTE

e successivamente aggiungere l’utente appena creato al database di Samba:

smbpasswd -a NOME_UTENTE

Dopo aver creato l’utente, si deve creare la directory che conterrà il profilo ed impostare i permessi adeguati:

mkdir /home/samba/profiles/NOME_UTENTE
chown NOME_UTENTE /home/samba/profiles/NOME_UTENTE -R

Per aggiungere una condivisione si deve prima creare la directory da condividere:

mkdir -p /PERCORSO/DIRECTORY/DA/CONDIVIDERE

Sucessivamente si devono impostare i permessi di lettura/scrittura. Ad esempio:

chown -R root:users /PERCORSO/DIRECTORY/DA/CONDIVIDERE

chmod -R ug+rwx,o+rx-w /PERCORSO/DIRECTORY/DA/CONDIVIDERE

Si deve infine aggiungere la condivisione nel file /etc/samba/smb.conf inserendo:

[allusers]
comment = All Users
path = /PERCORSO/DIRECTORY/DA/CONDIVIDERE
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes

Si deve riavviare Samba per caricare le nuove impostazioni:

/etc/init.d/samba restart

Per configurare delle stampanti condivise si utilizza CUPS. Ovviamente bisogna prima averlo installato:

apt-get install cupsys cupsys-client

Può risultare comodo cambiare le impostazioni di CUPS in modo che la sua interfaccia web di configurazione sia accessibile non solo in locale sul sever, ma anche dalla rete. Bisognerà quindi modificare il file /etc/cups/cupsd.conf inserendo nella sezione ‘Network Options’:

Listen 127.0.0.1:631
Listen INDIRIZZO_IP_LAN:631

Si deve poi impostare nella sezione ‘Security Options’:

AuthGroupName shadow

Dopo aver impostato i parametri di CUPS si dovranno configurare le stampanti tramite l’apposita interfaccia ed infine si può configurare la condivisione delle stampanti su Samba modificando il solito file /etc/samba/smb.conf.

Nella sezione “[global]” si aggiunge:

load printers = yes

Si aggiunge poi la sezione NOME_STAMPANTE:

[NOME_STAMPANTE]
path=/var/spool/cups
printer admin = root, guest, nobody
public = yes
guest ok = yes
printable = yes

Dove al posto di NOME_STAMPANTE ci va il nome della stampante impostato nella configurazione di CUPS.

Anche per attivare le ultime modifiche si deve riavviare il servizio di Samba:

/etc/init.d/samba restart

Sarà necessario agganciare al PDC ogni computer al domino. Per fare questo si deve prima creare un gruppo per tutte gli account associati ai computer:

groupadd clientpc

E poi aggiungere i pc:

useradd -g clientpc -d /dev/null -s /bin/false NOME_PC_NETBIOS$

Per motivi di sicurezza si blocca la password dell’account:

passwd -l NOME_PC_NETBIOS$

Come per gli utenti, anche per gli account dei computer si deve impostare l’account su Samba:

smbpasswd -a -m NOME_PC_NETBIOS

Per i client 9x/ME/NT/2k la procedura è la stessa che si utilizza per agganciarli ad un PDC Windows, per Windows XP invece è necessaria una procedura un po’ più complicata. E’ infatti necessario modificare una chiave del registro con regedit prima di poter agganciare il client al PDC Samba:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters
“RequireSignOrSeal”=dword:00000000

Anche i client GNU/Linux possono autenticarsi ad un dominio con un PDC Samba. Basta aggiungere nella sezione “[global]” del file /etc/samba/smb.conf le seguenti righe:

[global]
workgroup =
netbios name =
security = DOMAIN
encrypt passwords = Yes
password server =
preferred master = False
domain master = False

Per effettuare il join del client GNU/Linux al PDC si usa il seguente comando:

smbpasswd -j -r -U root

La procedura non è per nulla complicata. Certamente se si devono gestire molti utenti forse è meglio usare qualche software per l’amministrazione degli utenti o magari creare degli script per automatizzare i vari processi. E’ consigliato inoltre usare OpenLDAP come backend per la gestione utenti quando il loro numero è superiore al centinaio.

In molte realtà si potrebbero risparmiare i costi delle licenze di Windows Server adottando un sistema Open Source come soluzione.

Prossimamente vedrò di ampliare questa guida con la configurazione di un BDC (Backup Domain Controller) e l’uso di OpenLDAP come backend per la gestione utenti.

fonte : www.finex.org



Lascia un Commento

*

per contattarmi
linux [at] cividini.org