Configurare Samba su Ubuntu come PDC

Era da qualche tempo che desideravo mettere un po' in ordine gli appunti su come configurare 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 Samba

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

In versioni più recenti di Ubuntu questo comando potrebbe non funzionare correttamente. In tal caso al posto del parametro "modify" si può usare il parametro "add"

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.

premetto di aver installato da poco Ubuntu, quandi ho cercato di seguire alla lettera le tue indicazioni ma non riesco e riavviare samba, mi compare il seguente messaggio:

root@giuseppe-laptop:/etc/init.d# samba restart
bash: samba: command not found

Premetto che per accedere a tale cartella son dovuto entrare da amministratore!

He he hehe... questo perchè non hai seguito alla lettera le mie indicazioni!

Non ho mai scritto di entrare nella directory "/etc/init.d" e lanciare il comando "samba restart"; bensì ho scritto che bisogna eseguire il comando "/etc/init.d/samba restart" (che è diverso).

Quando vuoi eseguire un programma contenuto nella directory in cui sei posizionato o specifichi nella variabile di ambiente $PATH la directory speciale "." oppure lo esegui con "./nomeprogramma".

Il fatto di dover usare un utente con i permessi di amministrazione mi sembrava abbastanza ovvio, per questo non l'ho scritto!

Hai poi fatto l'autenticazione con OPENLDAP in samba?
Saluti

No, ho testato OpenLDAP indipendentemente da Samba, il prossimo passo sarà l'integrazione con Samba, ma non dovrebbe essere un grosso problema.

Salve, vorrei sapere se questo tipo di configurazione di samba può andare bene, per impostare un sistema linux, un sistema nt e una stampante di rete che hanno come punto di unione un router USRobotics 9105 o devo cercare altrove uno schema di impostazione della LAN.

Grazie.

Cordialmente

Dipende da cosa vuoi fare. Dici di avere un PC linux, uno NT ed una stampante di rete collegati tramite un router. Fin qui tutto ok. Ora il tuo scopo qual è?

  1. ti interessa solo permettere ai due PC di accedere direttamente alla stampante di rete?
  2. creare delle condivisioni nei due PC in modo che l'altro ci possa accedere?
  3. usare il PC linux come file server e come controller di dominio per permettere l'autenticazione da parte dei client (nel tuo caso se stesso ed il PC con NT)?
  4. ...altro...

In questa guida si spiega il punto 3. Se comunque ti serve configurare un altro scenario chiedi pure ok?

Ciao!

Allora, quello che vorrei fare è far si che i due pc (desktop-ubuntu 7.04 e laptop-winxphome) comunichino fra di loro come fossero in rete, ovvero che ciascuno dei due possa accedere sull'altro o se non fosse possibile, che almeno il desktop possa accedere al laptop e prelevare files da questo e trasferirli sul desktop stesso.
Inoltre vorrei che entrambi possano avere accesso alla stampante condivisa in maniera indipendente, considera che ho driver di entrambi i pc a disposizione per questa multifunzione.

Grazie

P.S. sono abbastanza nuovo del mondo linux, sto provando diverse cose e piano piano il pc funziona come voglio io, ma sulla configurazione della LAN, faccio molta fatica a venirne fuori.

Ciao

Per fare questo non ti serve configurare samba come un PDC, ma semplicemente puoi creare delle condivisioni. Lo stesso lo puoi fare anche da windows. In questo modo entrambi i PC possono accedere alle risorse condivise dell'altro.

Per quanto riguarda la stampante di rete non dovresti avere problemi se hai i driver per entrambi i sistemi operativi. :-)

Ti consiglio magari di leggere qualche guida che spiega come funzionano le reti, è sempre utile indipendentemente dal sistema operativo che si usa :-)

Ciao!

Ciao!
La guida è stupenda e funziona tutto alla grande!
Una domanda però:
Vorrei migrare un ambiente di una quarantina di account da windows server 2000 a linux (probabilmente debian o ubuntu). Ho cercato delle guide ma senza nessun risultato, sapresti per caso darmi qualche dritta o un linkettino? :)

Grazie :)

Ciao,
ho installato una piccola rete tra due computer, uno con su windows e l'altro con ubuntu 7.04.
Ora dal computer con su windows riesco ad accedere tranquillamente alle cartelle di ubuntu messe in condivisione.
Mentre se dal computer con su ubuntu seleziono Risorse < Rete< vedo il computer con su windows, clicco sull'icona e ricevo questo messaggio:

"Il contenuto delle cartelle non può essere visualizzato".

Se invece clicco Computer e su Posizione digito smb://192.168.1.2 (ip di windows)
vedo le cartelle di windows messe in condivisione.
Ad esempio ho messo in condivisione C, e dal computer con ubuntu vedo C e di fianco vedo un'altra cartella con C$.

Quindi la mia domanda è perché da Risorse< Rete non riesco ad aprire le cartelle condivise??
Spero di essere stato chiaro e che qualcuno possa aiutarmi...
Un grazie anticipato a tutti.
Ciao Giovanni

@Maelstrom: Puoi provare a cercare informazioni riguardo il comando:

net rpc vampire



@Giovanni: Potrebbe essere un problema di aggiornamento o un errore di configurazione da una o dall'altra parte. Comunque hai detto che da linux, usando direttamente l'IP, vedi le condivisioni C (quella che hai impostato tu) e C$ (la condivisione attivata di default), riesci ad accederci?

Ciao,
si, usando direttamente l'IP riesco a entrare, e vedo le cartelle doppie,
cioè vedo ad esempio una cartella con C (in questa riesco ad entrare), mente un'altra ancora con C$, e qua mi chiede la password, ma io sul computer con win non ho password.

Questo sono le informazioni che ho dopo che ho dato il comando "net rpc vampire".

[2007/07/03 16:59:19, 0] passdb/secrets.c:secrets_init(66) Failed to open /var/lib/samba/secrets.tdb [2007/07/03 16:59:19, 0] passdb/secrets.c:secrets_init(66) Failed to open /var/lib/samba/secrets.tdb [2007/07/03 16:59:19, 0] passdb/secrets.c:secrets_init(66) Failed to open /var/lib/samba/secrets.tdb [2007/07/03 16:59:19, 0] passdb/secrets.c:secrets_init(66) Failed to open /var/lib/samba/secrets.tdb [2007/07/03 16:59:19, 0] rpc_client/cli_pipe.c:get_schannel_session_key(2443) get_schannel_session_key: could not fetch trust account password for domain 'PICCOLO' [2007/07/03 16:59:19, 0] rpc_client/cli_pipe.c:cli_rpc_pipe_open_schannel(2673) cli_rpc_pipe_open_schannel: failed to get schannel session key from server 127.0.0.1 for domain PICCOLO. [2007/07/03 16:59:19, 0] utils/net_rpc.c:run_rpc_command(151) Could not initialise schannel netlogon pipe. Error was NT_STATUS_CANT_ACCESS_DOMAIN_INFO

Grazie del tempo che mi dedichi, spero che mi puoi aiutare...
Ciao Giovanni

Giovanni, come ti dicevo nell'altro messaggio, la condivisione C$ è una condivisione standard di Windows (che solitamente da windows è nascosta). Non badaci. Il PC con Windows, immagino abbia la versione Home vero?

Il comando:

net rpc vampire

era per rispondere alla domanda di Maelstrom.

ciao,
scusa non avevo letto che era per Maelstrom ...

Comunque uso windows pro sp2.

Ciao!
Intanto voglio complimentarmi con te per l'ottima guida!
Passiamo ora alla domanda che voglio farti: io ho bisogno di mettere su una rete di 6 pc (per ora) e sto pensando alle possibilità anche se (purtroppo) non mi intendo molto di server, ma me la cavo abbastanza bene con la rete in generale.
Ora mi trovo con 5 client con win xp home /pro (2 e 3 rispettivamente). Inoltre ho un pc che uso come server con win xp pro. Ora viene usato solo come file server e credo che win xp pro non offra ulteriori caratteristiche da server (mi sbaglio?). La mia idea è di implementare un server in modo che qualsiasi utente possa accedere da qualsiasi pc (un po come i laboratori di informatica all'università insomma...). Con dei file condivisi (con opportuni permessi a seconda del gruppo utente), stampanti condivise (ho 2 stampanti anche se una un po' vecchiotta). Inoltre vorrei sapere se fosse possibile fare una specie di sistema di posta interna e il controllo della connessione internet dal server (a mo di firewall insomma).

Hai qualche suggerimento da darmi?

Grazie mille

Grazie per i complimenti Diego.
Come hai notato Windows XP (sia home che pro) non offrono funzionalità "server" (altrimenti a cosa servirebbero le versioni di Windows Server?).
Per fare quello che vuoi tu, ovvero gestire in maniera centralizzata su un server:

  • gestione utenti
  • condivisione file/stampanti
  • email interna
  • firewall

adottare un server GNU/Linux è l'ideale, se vuoi cimentarti con Ubuntu la mia guida ti aiuta per i primi due punti, per i secondi due dovresti arrangiarti un po'. Un progetto che seguo molto interessante (che fa tutto quello di cui avresti bisogno, e anche di più) è Ebox: una distribuzione semoplicissima da installare e gestire (si configura tramite un qualunque browser web).

L'unica cosa da stare un attimo attenti è controllare che il modello della stampante da condividere funzioni sotto Linux, lo puoi verificare su questo sito che raccoglie tutti i driver.

Questo è comunque un problema abbastanza risolvibile: nella peggiore delle ipotesi cambiare una stampante costa molto meno rispetto all'acquisto di una licenza Microsoft per sistemi server.

Per quanto riguarda le postazioni con Windows XP Professional non hai problemi di alcun genere. Al contrario i PC con Windows XP Home non possono essere agganciati al dominio (e quindi niente gestione utenti e tante altre belle cose). Questa è una limitazione imposta da Microsoft (limitazione presente indipendentemente dal tipo di sistema operativo installato sul server).

Spero di esserti stato d'aiuto! Ciao!

Ciao,
Io invece ho già un dominio Win2k con client WinXP e vorrei inserire una serie di PC con Ubuntu. Ho configurato i nuovi client, anche con l'aiuto del tool SADMS ed ho ottenuto l'autenticazione centralizzata perfettamente funzionante. Anche l'accesso alle risorse di rete è ok (anche se la prima volta che accedo ad una risorsa mi chiede di nuovo di autenticarmi, anche se mi sono già autenticato al logon).
IL PROBLEMA è che i PROFILI ROAMING non funzionano, nel senso che tutte le modifiche vengono effettuate nella cartella locale /HOME/username ma questa non viene sincronizzata al logon/logoff con la cartella \\SERVER\profili\username presente nel server Win2k.
Non sono un esperto di Linux e non riesco a capire se è necessaria qualche particolare configurazione nel smb.conf del client Ubuntu per "attivare" i profili roaming.
Grazie.
Ciao.

Una soluzione veloce è quella di eseguire uno script al login ed uno al logout per sincronizzare la home directory locale e quella sul server. Puoi farlo usando rsync: lo script fa qualcosa di questo tipo:
1) monta nel filesystem locale la condivisione con i profili (//SERVER/profili/username)
2) con rsync sincronizza la home con quella nel server (al login dal server al client, al logout viceversa).

Pensavo che esistesse un qualche meccanismo automatico in samba, come c'è in XP, che non riuscivo ad attivare. Ok Adesso mi metto all'opera.
Grazie mille.

P.S.
Che ne dici di montare direttamente la /HOME/username su \\server\profili\username ?
E' una stupidaggine? Vantaggi? Svantaggi?

Montare direttamente la home dalla condivisione ti comporta rallentamenti nel server e nella rete: ogni volta che accedi ad un file nella tua home devi passare dalla rete per accedere al server... io non lo farei.

Ciao,
ho lavorato un po sul problema e ho deciso di montare lo share \\server\profili su /mnt/profili nella fstab (non lo faccio nel profile perché mi dice che mount è riservato a root, così monto la cartella superiore e poi faccio rsync nelle subdir). Il problema è che non riesco a fare rsync perché non riesco ad ottenere le autorizzazioni in scrittura nella cartella del profilo. Se provo a creare un file qualsiasi mi da accesso negato (anche da shell con cp o echo).
Lo share in win2k e i permessi sono adeguati (ho anche aggiunto everyone full control). Se uso Nautilus e entro nello share mi permette di fare tutto ma mi chiede prima user e password. Forse è questo il problema? Cosa posso fare? Perché mi chiede ancora di autenticarmi se io l'ho già fatto al logon direttamente sull'AD del server win2k?
Grazie.

Ti faccio anche io i complimenti per questa guida!!

Ho solo un problemino.
Io in /etc/samba/smb.conf ho impostato come nome workgroup CASA, però quando da win cerco di far la join al dominio mi dà un errore dicendo che non riesce a contattare il dominio.
Preciso che da windows riesco a pingare il server linux (non l'ho riavviato dopo aver installato Samba ed aggiunto l'opzione wins nel file /etc/nsswitch.conf però): potrebbe essere quello il "problemino"?

Quel server Linux fa anche da dhcp e dns (con dnsmasq).

Grazie in anticipo per la risposta!

@ blueinside:
Quando fai il mount della share imposta anche il nomeutente e password. Anche se hai fatto l'autenticazione su AD con l'utente, i permessi non vengono propagati alla partizione montata tramite fstab, ti basterà specificare utente e password nell'fstab.

@ Christian:
Se non riesci a pingare il server significa che potrebbero esserci dei problemi di configurazione della rete. Per prima cosa verifica che la rete sia configurata correttamente.

Mi aggiungo anch'io ai complimenti per la guida, sarebbe carino farne un pdf scaricabile tenendolo "pulito" dai commenti degli utenti o semmai aggiungendo i commenti/richieste in un capitolo a parte della guida stessa; dal canto mio stò terminando una guida su Debian Etch e volendo ti posso girare il pdf per renderlo scaricabile a tutti gli utenti ! :)

Attualmente uso una Debian Etch e grazie alla tua guida sono riuscito ad attivare Samba come PDC con tanto di join al dominio dai miei client w2kprof. però quando vado a loggarmi con l'utente normale (con root non dà problemi) mentre con l'user mi dà
"Autorizzazioni insufficienti per accedere al proprio profilo centrale su \\lnx-srv\profiles\gabriele. Contattare l'amministratore di rete." e aggiunge che sarà creato un profilo temporaneo che verrà poi eliminato.

Tra l'altro i comandi #net groupmap modify ntgroup="Domain Admins" unixgroup=root non mi funzionano...

Infine anche se lo sconsigli vorrei creare le vere e proprie home directory degli utenti lato server visto che la mia rete è fatta da una ventina di pc con poco traffico di rete in genere ma con la possibilità degli utenti di cambiare postazioni causa eventuali crash senza perdere il loro desktop.

Saluti !
GbMax78

Qualcuno mi aiuti, non so più dove sbattere la testa!!

Ho configurato, seguendo la guida, un PDC server su Ubuntu 7.04 versione server (presa dal sito ufficiale Ubuntu), seguendo passo passo questa guida, aggiungendo 2 utenti root e il classico pippo, sia in Unix che Samba, però appena provo a loggarmi dalla lan mi si presenta un grossissimo problema:

nei file di .log (/var/log/samba/log.smbd) leggo i messaggi di errore:

[2007/09/22 10:56:19, 0] auth/auth_util.c:create_builtin_administrators(763)
create_builtin_administrators: Failed to create Administrators
[2007/09/22 10:56:19, 0] auth/auth_util.c:create_builtin_users(729)
create_builtin_users: Failed to create Users

Ho provato sia ad usare passdb backend = tdbsam, che in alternativa passdb backend = smbpasswd (con l'aggiuntiva riga per specificare dove si trova il file smbpasswd), gli utenti ci sono, come le relative password e il file di configurazione smb.conf è praticamente identico a quello qui sopra.
Da una qualsiasi delle altre postazioni in lan (win XP Pro + SP2) posso tranquillamente pingare il server e dal server posso tranquillamente pingare le altre postazioni.

Vi prego qualcuno mi aiuti perchè sono veramente disperato!!!

I permessi sono impostati correttamente nelle varie directory e per i file di configurazione?

Sì, non solo i permessi sono giusti, ma anche i proprietari dei file/cartelle sono corretti. Non so più che fare, ho anche riformattato per la seconda volta, ma non cambia nulla. Poi ho provato a fare qualche ricerca on-line e ho visto che anche ad altri ha presentato lo stesso problema, con versioni differenti di samba e il bello è che non c'è una risposta o una soluzione.

1) Potrebbe essere un problema legato al software installato:
samba samba-common libcupsys2 libkrb53 winbind smbclient
Ubuntu è versione server 7.04 e Samba 3.0.24, alcune altre guide indicano di fare un apt-get install samba e basta.

Oppure un problema legato a winbind, anche se io non sono andato a modificare gli altri parametri di etc/nsswitch.conf tranne l'aggiunta di wins nella riga host.

Sono disperato!

Ho dimenticato di dire che in ogni caso gli account in tdb (o in alternativa in smbpasswd) ci sono e se faccio un:
net rpc user -S nome_server -Uutente_root%passwd_root
mi elenca tutti gli utenti correttamente.

Come posso verificare che i gruppi di sistema linux siano configurati correttamente per quelli windows?

La guida è davvero ottima: accessibile per tutti e soprattutto funziona :-) . . .
Il mio problema è che quando stampo un file con la stampante condivisa da windows, il file si aggiunge alla coda di stampa anche se con priorità bassa ( 1 su 99 ) ma la stampante non ne vuole proprio sapere di stampare il file!!! Rimane li impassibile senza produrre alcun suono come è solita fare . . .
La stampante è una canon i250. . . Penso non sia compatibile con linux, ma essendo condivisa da windows, non dovrebbe funzionare?? e se per quell'unico fortunato caso, dovesse poter funzionare, perchè mi sta rovinando l'esistenza lasciando sbattere i miei file?? T prego di rispondere perchè sono veramente disperato . . .
P.S: non ho esegiuto l'ultimo punto della guida (aggiungere o modificare la chiave di windows ) quindi non ho neanche modificato il file smb.conf come descritto nell ultimo passo (ovviamente l'ho modificato come descritto in tutti gli altri punti a riguardo)
Grazie in anticipo per la risposta ciao.

Ciao, io purtroppo mi trovo nelle stesse condizioni di Chris, se non peggio.

Da anche a me l'errore "auth/auth_util.c:create_builtin_administrators(763)
create_builtin_administrators: Failed to create Administrators"

Inoltre a me non funziona nemmeno il comando
net rpc user -S nome_server -Uutente_root%passwd_root

mi restituisce:
Could not connect to server nome_server
Connection failed: NT_STATUS_ACCESS_DENIED

Eppure ho controllato più volte di aver impostato la pwd di root, sia con passwd root che con smbpasswd -a root

Ho ubuntu 7.10 sul server.

Un aiutino? :-)

@GbMax78, @Chris, @Massimo: winbind è in esecuzione? I comandi

wbinfo -t

e

pdbedit -L

Cosa restituiscono?

Allora wbinfo .t mi restituisce

checking the trust secret via RPC calls failed
error code was NT_STATUS_CANT_ACCESS_DOMAIN_INFO (0xc00000da)
Could not check secret

mente pdbedit -L da:

games:5:games
nobody:65534:nobody
proxy:13:proxy
syslog:101:
www-data:33:www-data
pc-pdc1$:1005:
root:0:root
news:9:news
bin:2:bin
mail:8:mail
hplip:108:HPLIP system user,,,
messagebus:103:
dhcp:100:
daemon:1:daemon
avahi-autoipd:104:Avahi autoip daemon,,,
sshd:111:
cupsys:106:
man:6:man
lp:7:lp
utente-pdc1:1003:
gnats:41:Gnats Bug-Reporting System (admin)
backup:34:backup
haldaemon:107:Hardware abstraction layer,,,
sys:3:sys
klog:102:
ntp:110:
avahi:105:Avahi mDNS daemon,,,
list:38:Mailing List Manager
irc:39:ircd
gdm:109:Gnome Display Manager
sync:4:sync
uucp:10:uucp

Un'altra cosa, quando do il comando smbclient -L localhost -U% come scritto nella guida nell'output è presente
IPC$ ma manca ADMIN$

Può essere questo (parte de) il problema?

Ciao FiNeX
Grazie 1000 dell'interessamento

Ciao, volevo chiederti una cosa: sto cercando da una settimana di configurare Samba su ubuntu 7.10 per farlo diventare un PDC e centralizzare gli utenti Windows.

Riesco a creare gli utenti Samba e questi mi vengono riconosciuti sui client WinXp, solo che durante il log on appare il messaggio:

"Impossibile individuare la copia del server del profilo comune"
quindi prova a caricare un profilo locale "Impossibile trovare il
profilo locale" quindi prova a usare un profilo
temporaneo "Impossibile caricare un profilo accesso non consentito" .

Premetto che a me NON INTERESSANO i profili comuni, mi basta solo
centralizzare gli utenti Mac Os X e WinXp.

Grazie in anticipo per i tuoi consigli.
Michele

P.S.
La mia configurazione è la seguente:
/home/samba/profiles (con permessi 777)
/home/samba/netlogon (con permessi 777)
/home/shares/allusers

Ti posto anche il file smb.conf
[global]
workgroup = FLS
server string = %h server (Samba, Ubuntu)
obey pam restrictions = Yes
passdb backend = tdbsam
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew
\sUNIX\spassword:* %n\n *passwd:*password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
name resolve order = lmhosts host wins bcast
printcap name = cups
add user script = /usr/sbin/adduser --quiet --disabled-
password --gecos "" %u
logon drive = H:
domain logons = Yes
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
panic action = /usr/share/samba/panic-action %d
printing = cups
print command =
lpq command = %p
lprm command =

[homes]
comment = Home Directories
valid users = %S
read only = No
create mask = 0700
directory mask = 0700
browseable = No

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = Yes
share modes = No

[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
write list = root, @ntadmin

Ciao,
avevo il tuo stesso problema, l'ho risolto remmando la linea che impedisce l'uso di root.

invalid users = root

Fatto questo è andato tutto a posto

Spero possa esserti utile.

Ciao in primis un bel complimento per la pagina.
Ora il mio problema ho creato un bel fileserver con ubutnu 6.06 e ho installato samba.
Ora tutto funziona regolarmente nel mio gruppo di lavoro ma ho la necessità di fare in modo che gli utenti che accedono a samba da pc win possano avere la possibilità: di cambiarsi in maniera autonoma, di fargli scadere le password ogni x giorni
Ovviamente sul file server ci sono delle cartelle condivise
Ho guardato su un po di forum ma c'è molta confusione!
Mi sapresti aiutare??
grazie anticipatamente.

Ciao a tutti,
ho lo stesso problema di Michele. Pdc con samba 3.0.28a e client con windows vista. Qualcuno ha avuto lo stesso problema?

Vi allego alcune info:
[netlogon]
comment = Network Logons Service
path = /home/%u/netlogon
read only = no
guest ok = no
browseable = Yes
directory mask = 0700
create mask = 0600

[homes]
comment = Home Directories
path = /home/drive
browseable = yes
writable = yes
valid users = @ALL
directory mask = 0700
create mask = 0600
force user = %S
force group = "Domain Users"
include = /etc/samba/trash.conf

x Max: il tuo scopo è quello di tenere sincronizzate le password, ho capito bene?

x Giga: le home directory sono già state create?

Ciao e complimenti per l'ottima guida.
Ho seguito passo passo tutte le indicazioni che hai fornito e ho messo all'impiedi un server Ubuntu 7.10 che gestisce 6 computer XP Pro. Tutto funziona alla perfezione, accessi, condivisioni, ecc.. ma ogni tanto succede qualcosa di strano.
Quando un utente cerca di aprire un file qualsiasi, o una cartella qualsiasi, su XP esce la scritta "Non risponde" e tale situazione dura per 10-20 secondi dopo di che la cartella o il file si apre correttamente. Avrei poi la necessità che alcuni utenti possano leggere e scrivere su di una determinata cartella, inaccessibile a tutti gli altri utenti. Devo creare un gruppo a parte? Devo scrivere qualcosa nell'smb.conf?

Se puoi darci un'occhiata, ti allego l'smb.conf:

[global]

workgroup = ufficio
netbios name = intranet
server string = Server
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
passdb backend = tdbsam
security = user
name resolve order = bcast hosts
domain logons = yes
domain master = yes
preferred master = yes
local master = yes
os level = 65
wins support = no
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
logon path =
logon home =
logon drive = H:
add machine script = /user/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u
unix password sync = yes
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
passwd program = /usr/bin/passwd %u
passwd chat = *Enter*new*UNIX*password:* %n\n *Retype*new*UNIX*password:* %n\n *passwd:*password*update*successfully*
getwd cache = yes

[homes]
comment = Home Directory di ogni user
browseable = no
read only = no
writable = yes
create mask = 0750
directory mask = 0750

[netlogon]
path = /intranet/netlogon
read only = yes
write list = @admin
browseable = no

[documenti]
comment = Documenti Server
path = /intranet/documenti
writable = yes
available = yes
public = yes
browseable = yes
create mask = 0777
directory mask = 0777
#force user = nobody
#force group = nogroup

[manutenzione]
comment = Programmi di manutenzione
path = /intranet/manutenzione
read only = yes
write list = @admin
browseable = yes

Ciao Stefano. Per quanto riguarda i tempi di attesa prova a guardare nei log: spesso dai log si trova il problema ed anche la soluzione. Per la questione dei permessi ti consiglio di gestirli tramite dei gruppi separati.

Quale log devo guardare in particolare?

Ciao, questo è un pezzetto del daemon.log. Tutto il file è uguale ed è pienissimo di queste quattro righe. Sempre le stesse che si ripetono:

Apr 23 13:47:15 Server nmbd[4096]: [2008/04/23 13:47:15, 0] nmbd/nmbd_incomingrequests.c:process_name_refresh_request(172)
Apr 23 13:47:15 Server nmbd[4096]: [2008/04/23 13:47:15, 0] nmbd/nmbd_incomingrequests.c:process_name_refresh_request(173)
Apr 23 13:47:15 Server nmbd[4096]: Error - should be sent to WINS server
Apr 23 13:48:29 Server winbindd[4112]: [2008/04/23 13:48:29, 0] libsmb/clientgen.c:cli_receive_smb(112)
Apr 23 13:48:29 Server winbindd[4112]: Receiving SMB: Server stopped responding

Vorrei fare una domanda io ho una rete mista di client sui quali c'è installato sia windows che linux. Ho realizzato un PDC con samba e frontend LDAP. I client cone netbios hanno lo stesso nome sia in windows che in linux. Posso aggiungere lo stesso computer con windows e linux avente lo stesso nome netbios in samba o se lo avvio con windows dovrà avere un nome host diverso se invece avvio in computer con linux?
Grazie a chiunque voglia rispondermi.

Ciao, mi sto avvicinando ora al mondo linux pur essendo un discreto amministratore di rete in ambiente windows.
Ho installato Ubuntu 8.04 e sto cercando, attraverso la tua guida, di renderlo un pdc. Il problema è questo: dai clients windows riesco ad accedere alle cartelle private e condivise attraverso Samba, ma lasciando i clients (WinXP Pro SP2) nel gruppo di lavoro; non riesco infatti a mettere i clients nel dominio.
Quando ci provo, mi viene chiesto di autenticarmi come un amministratore del dominio, ma qualunque utente e password io scriva (anche immaginari), il messaggio di errore è sempre lo stesso:
"Durante il tentativo di aggiungere il computer al Dominio "NOME_DOMINIO" si è verificato il seguente errore: impossibile trovare il nome utente"

Cosa può essere? Puoi darmi una mano? Grazie 1000!

ottima guida. ho implementato il sistema nella scuola dove lavoro. nota: prima di riuscire a registrare una macchina nel dominio ho dovuto riavviare il server. il restart di samba non è stato sufficiente.

salve sono disperato non riesco a configurare la stampante di rete epson epl6200 su ubuntu 7.04 potete dirmi la procedura passo per passo vi ringrazio anticipamente
antonio

@Antonio: potrebbe essere che Ubuntu 7.04 è un po' vecchiotta come distribuzione, comunque prova a cercare i driver su OpenPrinting.

Ma cosa devo mettere nello script logon.bat, e dove lo devo mettere ?

È semplicemente uno script che viene eseguito al login. Se non devi eseguire niente al login allora non scriverci niente. Spesso viene usato per lanciare delle procedure, mapping di drive, sincronizzazioni ecc...

Ho un dubbio sul percorso logon path:
Se %N è il nome del server è %U è l'utente per un percorso come /home/samba/profiles/utente1 è giusto scrivere 'logon path = \\%N\samba\profiles\%U ?

ciao a tutti, ho configurato samba come PDC ma quando provo ad aggiungere i client al dominio mi viene chiesto di autenticarmi come un amministratore del dominio, ma qualunque utente e password io scriva (anche immaginari), il messaggio di errore è sempre lo stesso:
"Durante il tentativo di aggiungere il computer al Dominio "NOME_DOMINIO" si è verificato il seguente errore: impossibile trovare il nome utente"

qualcuno mi sa aiutare?

Stessa cosa di Cristiano, sono giorni che ci provo, ho già letto decine di guide tutte diverse ma il risultato è lo stesso.
Qualcuno sà cosa si deve controllare per sapere se si è fatto tutto in modo corretto ?
Saluti

Avete mappato gli utenti ed i gruppi? Che client state usando?

i client sono 2 pc XPpro sp3, un pc Ubuntu 8.04, 2 pc di servizi vari ancora da preparare (mi sto concentrando solo un WinXPpro sp3 al momento)
il server è Ubuntu 8.10
Io utilizzo webmin per le tutte le operazioni, i nomi degli utenti vengono riportati nelle liste sia per user di linux sia per gli user di samba. ho utilizzato anche la sincronizzazione degli utenti, ma niente da fare.

Se entro nel server come normale utente allora posso utilizzare la cartella condivisa, ma se tento di impostare il dominio allora mi dice che non trova l'utente.

Ho rifatto la mappatura per scrupolo, ma i messiggi non mi sembrano rassicuranti

:~# net groupmap modify ntgroup="Domain Admins" unixgroup=root
Can't map to an unknown group type.
:~# net groupmap add ntgroup="Domain Admins" unixgroup=root
Unix group root already mapped to SID S-1-5-21-3475812678-2374039419-3816931395-1001
:~# net groupmap add ntgroup="Domain Users" unixgroup=users
No rid or sid specified, choosing a RID
Got RID 1008
Successfully added group Domain Users to the mapping db as a domain group

:~# net groupmap add ntgroup="Domain Guests" unixgroup=nogroup
Unix group nogroup already mapped to SID S-1-5-21-3475812678-2374039419-3816931395-1003

purtroppo 'Domain Users' risulta essere un doppione ma con gruppo diverso vorrei eliminare quello errato.

Provo ancora ma ormai le idee stanno finendo
Saluti

Buon giorno,
grazie alla tua guida sono riuscito a fare un passo avanti nella configurazione di samba come PDC con Ubuntu 9.
Ora volevo chiederti come posso creare profili utenti capaci di istallare o disistallare programmi sui computer client (XP pro)?
Nella tua guida o trovato varie indicazioni:
- Quella di creare un alias dell'utente root. Io quindi ho creato e salvato un documento con al suo interno la riga di comando echo "root = Administrator"nel percorso /etc/samba/smbusers.
- Poi ho eseguito questi comandi dal terminale ed ho ricevuto questa risposta:

root@pdc-samba:~# net groupmap add ntgroup ="Domain Admins" unixgroup =root
[2009/05/06 11:46:12, 0] param/loadparm.c:lp_do_parameter(7198)
Ignoring unknown parameter "logon drivers"
[2009/05/06 11:46:12, 0] param/loadparm.c:lp_do_parameter(7198)
Ignoring unknown parameter "idmap gip"
must supply a name

Scusandomi se non sono stato molto chiaro ti ringrazio anticipatamente.

bene direi

samba con configurazione standard riconosce in automatico le stampanti e i pc collegati, o devo inserirli come client ugualmente? Grazie

Ciao, attraverso samba puoi condividere risorse di un PC verso altri PC, quindi non capisco il senso della tua domanda quando chiedi se Samba riconosce i PC collegati. A parte il discorso PC, ti confermo che con Samba puoi condividere tutte le stampanti configurate in locale tramite Cups.