Ewa Skrenty
Uczelniane Centrum Informatyczne, UMK

Przegląd i adaptacja schematu zasobów LDAP stosowanego w projekcie Samba do przechowywania informacji o sieci lokalnej

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

1. Konfiguracja Samby 2.2.x i serwera OpenLDAP

1.1 Instalacja Samby

Najpierw należy pobrać źródła Samby 2.2.x ze strony http://samba.org/samba/downloads.html lub via CVS. Ciąg komend do pobrania pakietu poprzez CVS jest następujący:

$ 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

$ /usr/local/openldap/libexec/slapd -f /usr/local/openldap/etc/openldap/slapd.conf

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

$ /usr/local/openldap/bin/ldapadd -x -D "cn=root,o=samba,dc=uni,dc=torun,dc=pl" -W -f dane.ldif

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

1.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ć.

  • Utworzenie konta użytkownika:
    $ /usr/local/samba/bin/smbpasswd -a <uzytkownik> -D 256

  • Utworzenie konta stacji roboczej:
    $ /usr/local/samba/bin/smbpasswd -m -a <nazwa_stacji>$ -D 256

  • Usunięcie konta:
    $ /usr/local/samba/bin/smbpasswd -x <nazwa_konta>

    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

    New SMB password: <haslo>
    Retype new SMB password: <haslo>
    LDAP search "(&(uid=efa)(objectclass=sambaAccount))" returned 0 entries.
    Added user efa.

    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:

    #
    # filter: uid=efa
    # requesting: ALL
    #

    # efa, samba, umk, pl
    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 result
    search: 2
    result: 0 Success

    # numResponses: 2
    # numEntries: 1

    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
    changetype: modify
    replace: profilePath
    profilePath: \\%N\profiles\%u
    -
    replace: scriptPath
    scriptPath: script.bat
    -
    replace: pwdMustChange
    pwdMustChange: 0

    i wykonujemy

    $ /usr/local/openldap/bin/ldapmodify -D "cn=root,o=samba,dc=uci,dc=uni,dc=torun,dc=pl" -W -f modyf.ldif

    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 -d :pserver:anoncvs@anoncvs.dcerpc.org:/home/cvsroot login
    $ 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/include/* /usr/include
    $ cp -p /usr/local/openldap/lib/* /usr/lib

    Instalacja Samby wymaga wykonania kilku komend. Najpierw należy wygenerować brakujące pliki:

    $ cd ./tng/source
    $ ./autogen.sh

    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
    $ 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:

    $ 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:

    #########################################################
    # 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

    pidfile  /usr/local/openldap/var/slapd.pid
    argsfile /usr/local/openldap/var/slapd.args

    schemacheck on

    loglevel 776

    #########################################################
    # 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 objectcalass eq
    index sn,cn,uid pres,sub,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:

    $ /usr/local/openldap/libexec/slapd -f /usr/local/openldap/etc/openldap/slapd.conf

    2.3 Wprowadzenie podstawowych danych do serwera LDAP

    Na początku konieczne jest dodanie do bazy LDAP kilku podstawowych rekordów:

    dn: o=samba,dc=uci,dc=uni,dc=torun,dc=pl
    o: samba
    objectClass: organization

    dn: id=root, o=samba, dc=uci,dc=uni,dc=torun, dc=pl
    id: root
    objectClass: sambaConfig
    nextrid: 3ed

    dn: uid=Administrator, o=samba,dc=uci,dc=uni,dc=torun,dc=pl
    objectClass: sambaAccount
    uid: Administrator
    lmPassword: F0D412BD764FFE81AAD3B435B51404EE
    ntPassword: 209C6174DA490CAEB422F3FA5A7AE634
    pwdLastSet: 3982F885
    grouprid: 508
    pwdMustChange: ffffffff
    ntuid: Administrator

    acctFlags: [U       ]
    uidNumber: 508
    rid: 1f4

    dn: uid=nobody, o=samba,dc=uci,dc=uni,dc=torun,dc=pl
    objectClass: sambaAccount
    uid: nobody
    uidNumber: 99
    ntuid: nobody
    rid: 1f5
    pwdLastSet: 39856D06
    acctFlags: [NU       ]
    lmPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
    ntPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX

    Powyższe dane umieszczamy w pliku dane.ldif i wykonujemy

    $ /usr/local/openldap/bin/ldapadd -x -D "id=root,o=samba,dc=uci,dc=uni,dc=torun,dc=pl" -W -f dane.ldif

    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.

    2.4 Konfiguracja i uruchomienie serwera SMB

    Najpierw trzeba utworzyć kilka dodatkowych katalogów, które nie są zakładane podczas instalacji:

    $ cd /usr/local/samba-tng/
    $ mkdir private
    $ chmod 700 private
    $ mkdir -p profiles
    $ mkdir -p netlogon

    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).
    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.

    Oto przykładowa konfiguracja pliku smb.conf

    [global]
    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

    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-tng/logs
    public = No
    browseable = No
    writeable = No

    [homes]
    comment = Katalogi domowe
    path = /home/%u
    read only = no
    create mode = 0700
    browseable = yes

    [netlogon]
    path = /usr/local/samba-tng/netlogon
    locking = no
    writeable = no
    guest ok = no
    browseable = yes

    [profiles]
    path = /usr/local/samba-tng/profiles
    writeable = no
    guest ok = yes
    browseable = yes
    create mode = 0777

    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
    $ /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

    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.

    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.

    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
    added interface ip=158.75.1.50 bcast=158.75.1.127 nmask=255.255.255.128

    następnie możemy załoyć konto użytkownikowi efa:

    [root@.]$ createuser efa -p
    SAM Create Domain User
    Domain: UCI Name: efa ACB: [U ]
    Create Domain User: OK

    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
    cn: Administratorzy Domeny
    objectClass: sambaGroup
    sambaMember: Administrator,1f4,1
    sambaMember: efa,3ed,1
    ntuid: Administratorzy Domeny
    rid: 200

    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ła
    Ignacio Coupeau,
    SambaTNG-PDC LDAP
    Ignacio Coupeau, Samba-PDC LDAP v.3
    Samba Project Documentation