Questa procedura e` stata verificata con Samba 3.0.14a su Debian Sarge, migrando da un NT4 sp6a.
Migrare un dominio da NT4 a samba3, tenendo buoni gli utenti e gli account delle workstation. I gruppi vanno modificati e quindi non e` importante tenerli.
Il server NT che vogliamo eliminare e` il PDC, nella rete si trova un server Samba 3 il quale ha utenti locali con lo stesso username del server NT4, per consentire agli utenti del dominio di accedere al server Samba anche se questo non partecipa al dominio di NT.
Il metodo indicato funziona anche se il server Samba viene installato ex-novo, quindi non ha mai lavorato in affiancamento all' NT, e non ha utenti locali. Inoltre funziona anche se il server Samba contiene solo alcuni utenti locali e non tutti quelli del server NT.
Il metodo indicato NON funziona se il server Samba contiene utenti locali che vanno mantenuti (e che accedono a Samba) che pero` non ci sono nell' NT. in questo caso occorrera` esportare questi utenti dal tdbsam e reimportarli alla fine. Questo caso non e` pero` spiegato.
Il server Samba, non partecipando al dominio, non ha machine accounts in locale, ne` conosce quelli dell' NT.
I gruppi, gli shares, le stampanti, sono totalmente diversi su Samba rispetto a NT, ed esistono gia` su Samba, in parte o per intero, quindi vanno preservati ed eventualmente integrati. Se anche non esistessero la procedura e` valida lo stesso, andranno creati in seguito secondo le proprie esigenze.
Di seguito sono indicate le operazioni da eseguire in sequenza nel momento in cui si effettua la migrazione.
ATTENZIONE: dal momento che si joina il dominio come BDC, i client cominciano a chiedere al BDC di autenticare, quindi siccome stiamo ancora migrando le configurazioni di fatto i client ricevono risposte farlocche che pero` considerano valide! In questa fase la rete deve essere ferma.
/var/lib/samba/passdb.tdb
contenente gli account utente di Samba.net groupmap modify
per mappare almeno i tre succitati gruppi.L'esempio di seguito effettua entrambe le operazioni sopra descritte.
adduser ntadmins net groupmap modify ntgroup="Domain Guests" unixgroup=nogroup net groupmap modify ntgroup="Domain Admins" unixgroup=ntadmins net groupmap modify ntgroup="Domain Users" unixgroup=users
domain master=no
in smb.confnet rpc join -S sntgiepr01 -W GIEPR -UAdministrator%password
per joinare il dominionet getlocalsid
per verificare il SID del dominio appena acquisito dall' NT.net rpc samdump -S sntgiepr01 -W GIEPR -UAdministrator%password > filename
per dumpare su un file tutti i dati degli utenti e gruppi del server NT. Non e` necessario, ma aiuta poi a capire cosa c'e` che non va, nel caso./var/lib/samba/group_mapping.tdb
, eseguire net groupmap list
per verificare se i gruppi sono tutti non mappatinet rpc vampire -S oldnt4pdc -U Administrator%password > vam.log 2>errori_vamp.log
per vampirare loggando stdout e stderr.A questo punto ci si trova con uno strano casino. Gli utenti sono portati correttamente, e gli account delle macchine anche, sempre che rispettino i limiti di dimensione dei nomi degli utenti e delle macchine. Gli utenti che in Linux (/etc/passwd) esistevano gia` sono rimasti li` e hanno conservato l' UID, il GID, e tutte le impostazioni presenti in /etc/passwd e /etc/shadow. Gli utenti nuovi sono stati creati con un default che dipende dalla configurazione di Samba. Lo stesso identico discorso vale per i gruppi in /etc/group.
Quello che non viene portato correttamente sono i gruppi con gli spazi, che proprio non vengono creati. Inoltre l'appartenenza degli utenti ai gruppi e` fatta a meta`, perche` il comando che esegue la funzione di "add user to group" in realta` aggiunge l'utente al gruppo indicato, ma lo rimuove da quelli in cui era prima, cosa che non dovrebbe fare. Il risultato e` che gli utenti sono membri solo dell'ultimo gruppo in cui appaiono. La cosa tuttavia non ci preoccupa perche` i gruppi sono da rifare.
Sarebbe bene verificare nei log del comando di vampire che gli errori siano circoscritti e gestibili. (tipicamente sono circoscritti a utenti o gruppi con nomi non validi, ovvero con spazi dentro)
Nota che gli account di macchina vengono messi dentro al GID 513 (domain users) anziche` 514 (domain guests) come fa Linux se joini le macchine al dominio. La cosa non dovrebbe provocare casino, pero`, quindi li lasciamo cosi` a meno che non abbiamo tempo da perdere.
Nota: occorre staccare dalla rete il vecchio PDC NT prima di lanciare samba sul nuovo. Questa roba viene fatta con i demoni di samba spenti.
pdbedit -L -v
se a naso i SID sono quelli giusti (cioe` parte del dominio interessato alla migrazione)pdbedit root -r -G="S-1-5-21-610474926-686117454-311576647-512"
net groupmap delete ntgroup="nome gruppo"
eliminando tutti i gruppi vecchi che sono stati migrati ma non ci servono.net groupmap add ntgroup="groupname" unixgroup=groupname type=d
(non credo che serva, dal momento che non c'e` nulla da mappare se i nomi dei gruppi sono uguali fra Linux e Windows)domain master=yes
e wins support = yes
, e levando wins server = 10.0.0.251
net user <username> /domain
per vedere se i dati dell'utente (e la mappatura dei gruppi) vengono letti bene dal nuovo PDC.E` possibile esportare e importare i dati dal backend tdbsam a un file XML, il che puo` venire utile per editarli a mano.
I comandi sono i seguenti:
$ pdbedit -e xml:filename (per esportare sul file "filename") $ pdbedit -i xml:filename (per importare)
NOTA: occorre avere installato (cioe` presente) il plug-in XML per pdbedit, il quale non fa parte di nessuna distro samba per Debian. Il workaround molto sporco e` stato prendere quello della Suse 9 della versione di Samba corrispondente con quella che uso. Detto file va messo in /usr/lib/samba/pdb/xml.so
, ed e` disponibile per Samba 3.0.14a qui: xml.so. Occorre anche installare il pacchetto libxml2
Per verificare che cosa viene registrato nel wins, nel caso in cui i client dovessero avere difficolta` a trovare il PDC, e` utile leggere (volendo editare anche) il file /var/lib/samba/wins.dat
che e` in testo. il PDC ha come nome netbios una stringa composta dal nome del dominio seguita dal carattere "1B" hex.