Ewa Skrenty
Uczelniane Centrum Informatyczne, UMK
W projekcie Samba informacje o koncie użytkownika takie jak nazwa użytkownika, uid, zakodowane hasła LANMAN/NT, flagi, data ustawienia hasła zazwyczaj są przechowywane w zakodowanym pliku smbpasswd. Ograniczenia takiego podejścia (brak możliwości przechowywania dodatkowych atrybutów, trudności w replikowaniu pliku smbpa sswd, konieczność sekwencyjnego wykonywania zapytań) zmusiły twórców projektu do skonstruowania efektywniejszych metod przechowywania atrybutów użytkownika. W niniejszym dokumencie opisany jest sposób wykorzystania protokołu LDAP do przechowywania informacji o koncie użytkownika lub stacji roboczej w Sambie.
W dokumencie jest przedstawiony opis konfiguracji serwera SMB dla Samby-TNG i Samby 2.2.x w oparciu o serwer OpenLDAP 2.0.x (ldap v.3). Informacje dotyczące instalacji serwera OpenLDAP można znaleźć w OpenLDAP 2.0 Administrator's Guide. Przyjmujemy, że serwer OpenLDAP został zainstalowany w katalogu /usr/local/openldap/.
Zawartość
1.Konfiguracja Samby 2.2.x i serwera OpenLDAP
1.1 Instalacja Samby
1.2 Konfiguracja serwera LDAP 
1.3 Wprowadzenie podstawowych danych do serwera LDAP
1.4 Konfiguracja i uruchomienie serwera SMB
1.5 Tworzenie nowych kont
2. Konfiguracja Samby TNG i serwera OpenLDAP
2.1 Instalacja Samby
2.2 Konfiguracja serwera LDAP 
2.3 Wprowadzenie 
podstawowych danych do serwera LDAP
2.4 Konfiguracja i uruchomienie serwera SMB
2.5 Tworzenie nowych kont
$ cvs -d :pserver:cvs@pserver.samba.org:/cvsroot login 
$ CVS password: <cvs> 
$ cvs -z3 -d :pserver:cvs@pserver.samba.org:/cvsroot co -r SAMBA_2_2 samba 
Źródła pakietu zostaną umieszczone w katalogu samba. Przed konfiguracją i instalacją należy skopiować biblioteki i nagłówki ldap-a w domyślne miejsce np. /usr/lib i /usr/include:
$ cp -p /usr/local/openldap/include/* /usr/include 
$ cp -p /usr/local/openldap/lib/* /usr/lib 
Instalacja pakietu wymaga wykonania standardowych kroków instalacyjnych. Dodatkowo należy podczas konfiguracji ustawić opcję with-ldapsam, co umożliwi współpracę Samby z LDAP-em. Wykonujemy:
$ ./configure --prefix=/usr/local/samba --with-ldapsam 
$ make 
$ make install 
1.2 Konfiguracja serwera LDAP
Do współpracy serwera LDAP z Sambą niezbędna jest odpowiednia konfiguracja pliku slapd.conf znajdującego się w katalogu 
/usr/local/openldap/etc/openldap/. 
Najpierw umieszczamy schemat dla Samby w katalogu 
/usr/local/openldap/etc/openldap/schema. Schemat ten dostarczony jest 
także z pakietem Samby, wystarczy zatem skopiować plik samba.schema 
z ./samba/examples/LDAP  do  /usr/local/openldap/etc/openldap/schema/. 
Następnie należy zmodyfikować plik slapd.conf, uwzględniając w liście 
schematów schemat dla Samby. Wymagane są również schematy nis.schema oraz 
inetorgperson.schema. 
Poniżej przedstawiona jest przykładowa konfiguracja pliku slapd.conf:
#########################################################
# global configuration directives
#########################################################
include  /usr/local/openldap/etc/openldap/schema/core.schema
include  /usr/local/openldap/etc/openldap/schema/cosine.schema
include  /usr/local/openldap/etc/openldap/schema/nis.schema
include  /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
include  /usr/local/openldap/etc/openldap/schema/samba.schema
pidfile  /usr/local/openldap/var/slapd.pid
argsfile /usr/local/openldap/var/slapd.args
schemacheck on
loglevel 776
#########################################################
# ldbm database definitions
#########################################################
database ldbm
rootdn "cn=root,o=samba,dc=uci,dc=uni,dc=torun,dc=pl"
rootpw secret
suffix "o=samba,dc=uci,dc=uni,dc=torun,dc=pl"
directory /usr/local/openldap/var/openldap-samba
index objectcalass eq
index primaryGroupID,rid,uid,cn  eq
index default sub
access to dn=".*,o=samba,dc=uci,dc=uni,dc=torun,dc=pl"
    by self write
    by * search
Po konfiguracji możemy uruchomić serwer slapd. Wykonujemy
Szczegółowe informacje na temat uruchamiania serwera OpenLDAP można znaleźć w OpenLDAP 2.0 Administrator's Guide.
1.3 Wprowadzenie podstawowych danych do serwera LDAP
Wszystkie konta użytkowników lub stacji roboczych przechowywane są w bazie LDAP 
jako obiekty klasy SambaAccount. Klasa ta składa się z następujących atrybutów:
Na początku wprowadzamy do serwera LDAP trzy podstawowe rekordy:
dn: o=samba,dc=uci,dc=uni,dc=torun,dc=pl
o: samba
objectClass: organization
# Administrator, samba, umk, pl
dn: uid=Administrator, o=samba,dc=uci,dc=uni,dc=torun,dc=pl
objectClass: sambaAccount
uid: Administrator
primaryGroupID: 508
rid: 508
lmPassword: F0D412BD764FFE81AAD3B435B51404EE
ntPassword: 209C6174DA490CAEB422F3FA5A7AE634
pwdLastSet: 0
pwdMustChange: 0
pwdCanChange: 0
logonTime: 0
logoffTime: 0
kickoffTime: 0
acctFlags: [U          ]
# nobody, samba, umk, pl
dn: uid=nobody, o=samba,dc=uci,dc=uni,dc=torun,dc=pl
objectClass: sambaAccount
uid: nobody
primaryGroupID: 99
rid: 99
lmPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
ntPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
pwdLastSet: 0
pwdMustChange: 0
pwdCanChange: 0
logonTime: 0
logoffTime: 0
kickoffTime: 0
acctFlags: [NU         ]
Powyższe dane umieszczamy w pliku dane.ldif i wprowadzamy do serwera LDAP za pomocą komendy
Wszystkie dodawane konta muszą mieć swoje wpisy w /etc/passwd i /etc/group. Jeżeli nie istnieje w systemie konto Administratora, należy je najpierw utworzyć.
LmPassword i ntPassword są zakodowanymi hasłami reprezentowanymi w postaci hexadecymalnej. Muszą zgadzać się z hasłem użytkownika w systemie. Do tworzenia haseł lmPassword i ntPassword można użyć narzędzia mkntpwd oraz poniższego skryptu:
 
#!/usr/bin/perl
system "stty -echo";
print "Podaj haslo:";
chomp($haslo=<STDIN>);
print "\n";
system "stty echo";
$ntpwd = `/usr/local/sbin/mkntpwd '$haslo'`;
$lmpassword = substr($ntpwd, 0, index($ntpwd, ':')); 
chomp $lmpassword;
$ntpassword = substr($ntpwd, index($ntpwd, ':')+1); 
chomp $ntpassword;
print "LmPassword: " ,$lmpassword , "\nNtPassword: ", $ntpassword, "\n";
1.4 Konfiguracja i uruchomienie serwera SMB
W katalogu /usr/local/samba/lib/ tworzymy plik smb.conf i definiujemy w nim parametry konfiguracyjne Samby. Po dodaniu przy kompilacji opcji --with-ldapsam, dostępne są dodatkowe parametry dotyczące współpracy z serwerem LDAP:
| ldap server | - określa nazwę hosta, na którym jest uruchomiony serwer LDAP | 
| ldap admin dn | - określa DN, za pomocą którego serwer Samby będzie łączył się z serwerem LDAP | 
| ldap suffix | - określa bazowy DN, jaki będzie przeszukiwany | 
| ldap port | - definiuje port, na którym odbywać się będzie komunikacja z serwerem LDAP | 
| ldap filter | - określa filtr używany przy przeszukiwaniu bazy LDAP | 
| ldap ssl | - określa, czy komunikacja z serwerem LDAP ma się odbywać za pomocą protokołu SSL | 
Najczęściej wystarczy zdefiniować pierwsze cztery paramerty. Parametr ldap filter można pozostawić przy domyślnej wartości. Przeszukiwane są wówczas obiekty klasy sambaAccount według atrybutu uid. W przypadku, gdy komunikacja z serwerem LDAP ma odbywać się bez pośrednictwa protokołu SSL, ustawić trzeba parametr ldap ssl = off (domyślnie obsługa SSL jest włączona).
Oto przykładowa konfiguracja pliku smb.conf:
  [global] 
ldap suffix = "o=samba,dc=uci,dc=uni,dc=torun,dc=pl" 
ldap admin dn = "cn=root,dc=uci,dc=uni,dc=torun,dc=pl" 
ldap server = efa.uci.uni.torun.pl 
ldap port = 389
ldap ssl = off
workgroup = UCI 
netbios name = efa 
comment = Linux RedHat Samba Server 
security = user 
null passwords = Yes
 
encrypt passwords = yes 
logon drive = U: 
domain master = yes 
domain logons = yes 
preferred master = yes 
os level = 255 
wins support = yes 
wins proxy = yes 
time offset = 60 
time server = True 
log file = /usr/local/samba/logs 
public = No 
browseable = No 
writable = No 
[homes]
 
comment = Katalogi domowe
path = /home/%u 
read only = no 
create mode = 0700 
browseable = yes 
[netlogon] 
path = /usr/local/samba/netlogon 
locking = no 
writeable = no 
guest ok = no 
browseable = yes 
[profiles]
 
path = /usr/local/samba/profiles 
writeable = no
 
guest ok = yes 
browseable = yes
create mode 0777 
Przed uruchomieniem serwera należy ustawić w Sambie hasło administratora (admin dn), za pomocą którego będzie możliwa komunikacja serwerem slapd. Musi to być to samo hasło jakie ustawione jest w parametrze rootpw w pliku slapd.conf. Hasło administratora w Sambie przechowywane jest w pliku secrets.tdb w katalogu /usr/local/samba/private. Ustawiamy je uruchamiając program smbpasswd z opcją -w:
$ /usr/local/samba/bin/smbpasswd -w <haslo>
Tworzymy jeszcze brakujące katalogi:
$ cd /usr/local/samba/
$ mkdir var/locks
$ mkdir profiles
$ mkdir netlogon
$ chmod 755 var/locks
$ chmod 755 profiles
$ chmod 755 netlogon
i startujemy demony serwera SMB:
$ ./sbin/smbd -D
$ ./sbin/nmbd -D
 
 
 
 gdzie opcja -D 256 oznacza poziom debugowania.
 
Dla przykładu utworzymy w Sambie konto użytkownika efa:
 
$ /usr/local/samba/bin/smbpasswd -a efa -D 256 
Wykonując komendę:
 
$ /usr/local/openldap/bin/ldapsearch -b "o=samba,dc=uni,dc=torun,dc=pl" -D 
"cn=root,o=samba,dc=uni,dc=torun,dc=pl" -W "uid=efa"
 
możemy zobaczyć, jakie dane nowego konta zostały umieszczone w bazie LDAP:
 
# 
# efa, samba, umk, pl 
# search result 
# numResponses: 2 
Należy pamiętać, że przy tworzeniu konta stacji roboczej nazwa komputera musi być zakończona 
znakiem "$", zarówno przy tworzeniu konta w Sambie jaki i w systemie.
 
Może się okazać, że wartości domyślne niektórych atrybutów nie są zgodne z naszymi oczekiwaniami, bądź chcelibyśmy ustawić dla poszczególnych kont nowe atrybuty. Należy wówczas utworzyć plik 
ldif zawierający potrzebne dane i wykonać komendę ldapmodify.
Dla przykładu zmodyfikujemy konto użytkownika efa dodając atrybut
scriptPath, 
profilePath, oraz wyłączymy konieczność zmiany hasła przy pierwszym logowaniu.
Warto zwrócić uwage na fakt, iż wartości parametrów zdefiniowanych w pliku smb.conf są przysłaniane wartościami
przechowywanymi w bazie LDAP. 
 Tworzymy plik modyf.ldif zawierający dane:
 
dn: uid=efa,o=samba,dc=uci,dc=uni,dc=torun,dc=pl 
i wykonujemy 
 
$ /usr/local/openldap/bin/ldapmodify -D "cn=root,o=samba,dc=uci,dc=uni,dc=torun,dc=pl" -W -f modyf.ldif
 
 
 
$ cvs -d :pserver:anoncvs@anoncvs.dcerpc.org:/home/cvsroot login  
$ cp -p /usr/local/openldap/include/* /usr/include  
Instalacja Samby wymaga wykonania kilku komend. Najpierw należy wygenerować 
brakujące pliki:
 
$ cd ./tng/source  
a następnie wykonać standardowe kroki instalacyjne. 
Konieczne jest ustawienie opcji with-ldap, co umożliwi współpracę Samby z LDAP-em. 
Katalog, w którym pakiet zostanie zainstalowany oczywiście mozna wybrać dowolny. 
W naszym przykładzie będzie to 
/usr/local/samba-tng. Wykonujemy:
 
$ ./configure --prefix=/usr/local/samba-tng --with-ldap  
 
$ cp ./tng/sources/ldap/sambatng.schema-v3 /usr/local/openldap/etc/openldap/schema/samba-tng.schema  
 
a następnie zmodyfikować plik slapd.conf. Klasy obiektów definiowane w 
samba.schema korzystają  z atrybutów definiowanych w schemacie 
nis.schema,  dlatego również i ten schemat należy dołączyć. Poniżej przedstawiona jest 
przykładowa konfiguracja:
 #########################################################
 pidfile  /usr/local/openldap/var/slapd.pid
 schemacheck on
 loglevel 776
 #########################################################
 index objectcalass eq 
access to dn=".*,o=samba,dc=uci,dc=uni,dc=torun,dc=pl"
 
Po konfiguracji możemy uruchomić serwer slapd:
 
 
dn: o=samba,dc=uci,dc=uni,dc=torun,dc=pl 
dn: id=root, o=samba, dc=uci,dc=uni,dc=torun, dc=pl 
dn: uid=Administrator, o=samba,dc=uci,dc=uni,dc=torun,dc=pl 
acctFlags: [U       ] 
dn: uid=nobody, o=samba,dc=uci,dc=uni,dc=torun,dc=pl 
Powyższe dane umieszczamy w pliku dane.ldif i wykonujemy 
 
 
Podstawowym obiektem utrzymywanym w bazie LDAP jest obiekt klasy 
SambaAccount. Część atrybutów tej klasy została opisana w punkcie 1.3. Dodatkowo w Sambie TNG obiekt tej klasy może zawierać 
atrybut gidNumber umożliwiający przypisanie użytkownika do określonej grupy użytkowników. 
Umieszczanie w bazie rekordu uid=root nie jest zazwyczaj konieczne, w przypadku Samby 
TNG jest niezbędne do utrzymywania wartości nextrid.
Wartości takie jak uidNumber, gidNumber pochodzą 
bezpośrednio z pliku /etc/passwd. Należy wcześniej upewnić się, że w systemie istnieje konto 
Administratora, jak i innych dodawanych użytkowników. Hasła lmPassword i ntPassword są 
16-bajtowymi ciągami znaków reprezentowanymi w postaci hexadecymalnej. Sposób ich generowania jest opisany w 
punkcie 1.3.  
 
$ cd /usr/local/samba-tng/ 
W katalogu /usr/local/samba-tng/private należy utworzyć plik ldappasswd i umieścić w nim hasło, 
które będzie uzywane do łączenia się z serwerem LDAP (rootpw z pliku konfiguracyjnego slapd.conf).  
 
Oto przykładowa konfiguracja pliku smb.conf
 
[global]  
workgroup = UCI  
logon drive = U:  
preferred master = yes  
time offset = 60  
log file = /usr/local/samba-tng/logs  
[homes] 
[netlogon]  
[profiles] 
Do uruchomienia serwera potrzebne jest wystartowanie demonów, znajdujących się w /usr/local/samba-tng/sbin.
Warto wcześniej zapoznać się z działaniem każdego z demonów i uruchomić te, które są potrzebne. Ich opis znajduje się w manualu dostępnym w pakiecie.
W naszym przypadku uruchamiamy następujące demony:
 
$ /usr/local/etc/samba_tng/sbin/smbd -d 3 
Możemy sprawdzić czy poprawnie skonfigurowaliśmy serwer Samby
 
$ /usr/local/samba-tng/bin/smbclient -L efa.uci.uni.torun.pl
 
Po uruchomieniu powyższej komendy powinniśmy otrzymać listę zasobów dostępnych na serwerze. Jeżeli pojawił się błąd to albo niepoprawnie skonfigurowaliśmy serwer lub jeden z potrzebnych 
demonów nie został wystartowany. Warto prześledzić plik /usr/local/samba-tng/logs zawierający 
komunikaty wysyłane przez serwer Samby.  
 
 
 
 
 
Narzędzia samedit można użyć również w sposób interaktywny. Najpierw logujemy się jako root:
 
$ /usr/local/samba-tng/bin/samedit -S . -U root następnie możemy załoyć konto użytkownikowi efa:
 
[root@.]$ createuser efa -p  
Po uruchomieniu komendy: 
 
[root@.]$ enumusers
 
otrzymamy listę utworzonych użytkowników i stacji.
 
Atrybuty poszczególnych kont możemy dostosować do własnych potrzeb modyfikując je lub  dodawać 
nowe. Tworzymy wówczas plik ldif zawierający nowe dane i dodajemy je do serwera za 
pomocą ldapmodify. Atrybuty przechowywane w bazie LDAP przysłonią wówczas 
parametry definiowane w pliku konfiguracyjnym Samby dla danego konta. 
 
W obrębie domeny użytkowników lub stacje robocze możemy przypisywać do określonych grup, co 
pozwala na manipulowanie uprawnieniami kont. Grupy mogą być przechowywane w bazie LDAP jako 
obiekty klasy sambaGroup, sambaBuiltin oraz sambaAlias. Za 
pomocą tych obiektów możemy zaimplementować w bazie LDAP konfigurację takich parametrów 
jak local group map, domain user map oraz domain group map. 
Grupy możemy tworzyć ręcznie umieszczając dane w pliku ldif i dodając do bazy 
komendą 
ldapmodify. 
Przykładowy plik 
grupa.ldif może mieć postać:
 
dn: dn=Administratorzy Domeny,o=samba,dc=uci,dc=uni,dc=torun,dc=pl 
Po dodaniu pliku do bazy LDAP zostanie utworzona grupa "Administratorzy Domeny" do której 
należą 
użytkownicy Administrator i efa. Należy jeszcze zmodyfikować konto użytkownika
efa zastępując wartość atrybutu grouprid wartością rid grupy  oraz 
gidNumber wartością gid konta Administratora w systemie. 
 
Powyższe operacje można wykonywać również za pomocą narzędzia samedit. Służą do tego 
funkcje addgroupmem, creategroup, addaliasmem, createalias. 
Niestety nie wszystkie funkcje programu samedit są jeszcze w pełni funkcjonalne, dlatego 
większość operacji należy wykonywać ręcznie. 
 
Źródła1.5 Tworzenie nowych kont
W Sambie 2.2.x nowe konta można zakładać za pomocą programu 
smbpasswd,  który wprowadza wszystkie potrzebne rekordy do serwera LDAP. 
Tworzone konta muszą mieć odpowiednie wpisy w plikach 
/etc/passwd i /etc/group.  Zatem przed utworzeniem konta w 
Sambie należy się upewnić, że istnieje takie konto w systemie, ewentualnie je 
wcześniej założyć. 
$ /usr/local/samba/bin/smbpasswd -a <uzytkownik> -D 256
$ /usr/local/samba/bin/smbpasswd -m -a <nazwa_stacji>$ -D 256 
$ /usr/local/samba/bin/smbpasswd -x <nazwa_konta> 
New SMB password: <haslo>
Retype new SMB password: <haslo>
LDAP search "(&(uid=efa)(objectclass=sambaAccount))" returned 0 entries.
Added user efa.
# filter: uid=efa
# requesting: ALL
#
dn: uid=efa,o=samba,dc=uci,dc=uni,dc=torun, dc=pl
uid: efa
pwdLastSet: 1015313324
logonTime: 0
logoffTime: 2147483647
kickoffTime: 2147483647
pwdCanChange: 0
pwdMustChange: 2147483647
displayName: Ewa Skrenty
cn: Ewa Skrenty
rid: 2000
primaryGroupID: 2001
lmPassword: 56ADA603D6D3F48EAAD3B435B51404EE
ntPassword: E61A5D8E9B8D5DAAA21F74A97D82FEB6
acctFlags: [UX         ]
objectClass: sambaAccount
search: 2
result: 0 Success
# numEntries: 1
changetype: modify
replace: profilePath
profilePath: \\%N\profiles\%u
-
replace: scriptPath
scriptPath: script.bat
-
replace: pwdMustChange
pwdMustChange: 0
2. Konfiguracja Samby TNG i serwera OpenLDAP
2.1 Instalacja Samby
Należy pobrać pakiet Samba-TNG ze strony http://www.samba-tng.org  lub za pomocą  
CVS. Ponieważ pakiet ten jest stale rozwijany zaleca się pobranie najnowszej wersji via CVS:
$ CVS password: <anoncvs> 
$ cvs -z3 -d :pserver:anoncvs@anoncvs.dcerpc.org:/home/cvsroot co tng 
Źródła pakietu zostaną umieszczone w katalogu tng.
Przed konfiguracją i instalacją należy skopiować biblioteki i nagłówki 
ldap-a w domyślne miejsce np. /usr/lib i /usr/include:
$ cp -p /usr/local/openldap/lib/* /usr/lib 
$ ./autogen.sh 
$ make 
$ make install 
2.2 Konfiguracja serwera LDAP
Do współpracy serwera LDAP z Sambą niezbędna jest odpowiednia konfiguracja pliku 
slapd.conf. Ważne jest 
włączenie w listę schematów schematu dla 
Samby TNG. Z pakietem Samby TNG są dostarczane gotowe schematy dla różnych wersji LDAP-a. 
Wystarczy skopiować odpowiedni plik do katalogu LDAP-a:
# global configuration directives
#########################################################
include  /usr/local/openldap/etc/openldap/schema/core.schema
include  /usr/local/openldap/etc/openldap/schema/cosine.schema
include  /usr/local/openldap/etc/openldap/schema/nis.schema
include  /usr/local/openldap/etc/openldap/schema/samba-tng.schema
argsfile /usr/local/openldap/var/slapd.args
# ldbm database definitions
#########################################################
database ldbm
rootdn "id=root,o=samba,dc=uci,dc=uni,dc=torun,dc=pl"
rootpw secret
suffix "o=samba,dc=uci,dc=uni,dc=torun,dc=pl"
directory /usr/local/openldap/var/openldap-tng
index sn,cn,uid pres,sub,eq
index default sub
    by self write
    by * search
2.3 Wprowadzenie podstawowych danych do serwera LDAP
Na początku konieczne jest dodanie do bazy LDAP kilku podstawowych rekordów:
o: samba
objectClass: organization
id: root
objectClass: sambaConfig
nextrid: 3ed
objectClass: sambaAccount
uid: Administrator
lmPassword: F0D412BD764FFE81AAD3B435B51404EE
ntPassword: 209C6174DA490CAEB422F3FA5A7AE634
pwdLastSet: 3982F885
grouprid: 508
pwdMustChange: ffffffff
ntuid: Administrator
uidNumber: 508
rid: 1f4
objectClass: sambaAccount
uid: nobody
uidNumber: 99
ntuid: nobody
rid: 1f5
pwdLastSet: 39856D06
acctFlags: [NU       ]
lmPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
ntPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
2.4 Konfiguracja i uruchomienie serwera SMB
Najpierw trzeba utworzyć kilka dodatkowych katalogów, które nie są zakładane podczas instalacji:
$ mkdir private
$ chmod 700 private
$ mkdir -p profiles
$ mkdir -p netlogon
Następnie tworzymy plik smb.conf w katalogu /usr/local/samba-tng/lib/, 
który należy odpowiednio skonfigurować. Z dystrybucją Samby w katalogu examples 
jest dostarczony przykładowy plik konfiguracyjny. Wystarczy go skopiować do 
/usr/local/samba-tng/lib/smb.conf i zmodyfikować, bądź utworzyć własnoręcznie. 
Część dotycząca serwera LDAP umieszczamy w sekcji [global]. Potrzebne będzie określenie następujących parametrów:
 ldap server   określa nazwę hosta, na którym jest uruchomiony serwer LDAP 
 
 ldap bind as   określa DN za pomocą którego serwer 
Samby będzie łączył się z serwerem LDAP
 
 ldap suffix   określa bazowy DN używany do przeszukiwania bazy LDAP 
 
 ldap scope   określa zakres przeszukiwania bazy 
LDAP (możliwe wartości: 
base, one, sub)
możemy pozostawić przy domyślnej wartości one.
 
 
ldap suffix = "o=samba,dc=uci,dc=uni,dc=torun,dc=pl" 
ldap bind as = "id=root,dc=uci,dc=uni,dc=torun,dc=pl" 
ldap passwd file = /usr/local/samba-tng/private/ldappasswd 
ldap server = efa.uci.uni.torun.pl 
ldap port = 389
netbios name = efa 
comment = Linux RedHat Samba Server 
security = user 
null passwords = Yes
 
encrypt passwords = yes 
domain master = yes 
domain logons = yes 
os level = 255 
wins support = yes 
wins proxy = yes 
time server = True 
public = No 
browseable = No 
writeable = No 
 
comment = Katalogi domowe
path = /home/%u 
read only = no 
create mode = 0700 
browseable = yes 
path = /usr/local/samba-tng/netlogon 
locking = no 
writeable = no 
guest ok = no 
browseable = yes 
 
path = /usr/local/samba-tng/profiles 
writeable = no 
 
guest ok = yes 
browseable = yes 
create mode = 0777
$ /usr/local/etc/samba_tng/sbin/nmbd -d 3
$ /usr/local/etc/samba_tng/sbin/srvsvcd
$ /usr/local/etc/samba_tng/sbin/wkssvcd 
$ /usr/local/etc/samba_tng/sbin/lsarpcd
$ /usr/local/etc/samba_tng/sbin/samrd
$ /usr/local/etc/samba_tng/sbin/netlogond
$ /usr/local/etc/samba_tng/sbin/browserd
2.5 Tworzenie nowych kont
Aby użytkownik mógł korzystać z udostępnianych zasobów należy utworyć mu konto w serwerze LDAP. Można to 
zrobić ręcznie tworząc plik ldif zawierający dane i dodać za pomocą komendy ldapmodify 
(podobnie jak konto Administratora i Nobody). W Sambie TNG  można zakładać konta również za pomocą narzędzia 
samedit. Wszystkie zakładane konta, zarówno użytkowników jaki i maszyn czy grup muszą mieć swoje wpisy w plikach /etc/passwd i /etc/group. 
$ /usr/local/samba-tng/bin/samedit -S . -U root -c 'createuser <uzytkownik> -p <hasło_uzytkownika>'
$ /usr/local/samba-tng/bin/samedit -S . -U root -c 'samuserset <użytkownik> -p <nowe-hasło>'
$ /usr/local/samba-tng/bin/samedit -S . -U root -c 'createuser <nazwa_stacji>$'
added interface ip=158.75.1.50 bcast=158.75.1.127 nmask=255.255.255.128
 
SAM Create Domain User
Domain: UCI Name: efa ACB: [U          ]
Create Domain User: OK
cn: Administratorzy Domeny
objectClass: sambaGroup
sambaMember: Administrator,1f4,1
sambaMember: efa,3ed,1
ntuid: Administratorzy Domeny
rid: 200
 
Ignacio Coupeau, SambaTNG-PDC 
LDAP 
Ignacio Coupeau, Samba-PDC LDAP 
v.3
Samba Project 
Documentation