Samba jako kontroler domeny (PDC) z LDAP

15 kwiecień 2008, autorstwa: kozik

Z racji pewnych zmian organizacyjnych nastał czas przebudowy sieci windowsowej w naszym labo (dotychczas siedziało to na zwykłej Sambie z lokalną bazą kont) - w końcu trzeba zrobić to w pełni profesjonalnie. Docelową strukturą ma być kontroler domeny (PDC) na Sambie z bazą użytkowników w LDAP. Cały dzień walenia się z tym i w końcu z dumą mogę uznać - działa. Ale babrania się (i nauki) co nie miara. Usługi katalogowe (OpenLDAP) mają przechowywać konta:

  1. lokalne, czyli zastąpić /etc/passwd i /etc/shadow;
  2. Samby, czyli userów i maszyn w sieci Windows.

Kilka myśli:

  1. Poradników w sieci troszkę jest - żaden nie rozwiązuje sprawy od A do Z.
  2. Instalacja i wstępna konfiguracja OpenLDAP i modułów pam_ldap/nss_ldap jest prosta.
  3. Jak w /etc/nsswitch.conf dyrektywa dla serwisu z grupami zawierała files przed ldap - podstawowe polecenia (np. id) się wywalały (”failed to get groups for user root: No such file or directory“). Dopiero przestawienie kolejności (czyli group: ldap files) zamyka problem. Chyba natknąłem się na ten problem jako pierwszy (Google nic nie wie).
  4. phpldapadmin działa znakomicie (spora zmiana w stosunku do wczesnych wersji 0.9) - polecam.
  5. Ręczna próba zbudowania katalogu dla Samby to jakiś hard-core. Bez smbldap-tools (i jego smbldap-populate) nie da rady, bo samemu SID-ów nie wymyślisz. Narzędzia obejmują ponadto tworzenie/modyfikację/usuwanie użytkowników i grup oraz zmianę haseł - ręczne grzebanie w katalogu daje ograniczone rezultaty.
  6. Świat Windows (Samba) i Uniksa (POSIX) to dwa różne światy. Jak się o tym zapomni, to dupa. Użytkownik (dodany przez smbldap-useradd) musi mieć ustawioną jakąś podstawową grupę windowsową (np. Domain Users), tzn. nie zwykłą posixGroup. Dopiero później można tego usera dodać do innych grup (już “zwykłych”), aby członkostwem w grupach dokonywać autoryzacji.
  7. Debugowanie lepiej LDAP-a nie przez logi, ale poprzez uruchomienie jego procesu w terminalu, np.: /usr/lib/openldap/slapd -f /etc/openldap/slapd.conf \
    -u ldap -g ldap \
    -h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock' \
    -d 256
    Przy czym jak zapomnisz o ustawieniu UID/GID procesu, to pewnie skopie się część uprawnień bazy OpenLDAP.
  8. Konta maszyn (wbrew HOWTO i dokumentacji Samby) muszą być w tej samej gałęzi co konta użytkowników. Nie można mieć ou=Hosts (czy ou=Computers) dla maszyn i obok ou=People dla użytkowników - wszystko ma być w jednej gałęzi (np. ou=People). Problemem jest sama Samba, która mimo ustawienia “ldap machine suffix” na właściwą gałąź, szuka maszyn w gałęzi “ldap user suffix“. Nie powinna tak robić, ale robi… durne zwierzę.
  9. Wszystko jest rozproszone i wcale nie uproszczone. W pliku konfiguracyjnym serwera OpenLDAP (slapd.conf) siedzą dane uwierzytelniające Managera (taki root dla katalogu). Samba musi mieć swojego admina w katalogu, który posłuży do łączenia się po protokole LDAP - jego hasło trzyma w secrets.tdb. smbldap-tools potrzebują zapisania hasła do takiego konta w pliku tekstowym w /etc/smbldap-tools. W katalogu każde konto ma hasła w 3 atrybutach (hasło uniksowe, LM i NT).
  10. Backupu, replikacji i optymalizacji indeksów katalogu jeszcze nie ruszałem…
  11. Domena jest typu NT4, więc do zarządzania stacjami roboczymi musi wystarczyć skrypt logowania oraz edytor polis systemowych poledit.exe (z adminpak.msi z plików Service Pack 4 dla Windows 2000). Nie ma grup polis (”Group Policy“), ale i tak co nieco się da zrobić (patrz linki na dole).
  12. Jeśli używa się wędrujących profili (”roaming profiles“), to nie wolno zapomnieć o rozszerzonych atrybutach systemu plików (user_xattr) i odpowiednich ustawień Samby (”store dos attributes” oraz “map acl inherit” na “yes“). O ile przy zwykłych zasobach sieciowych atrybuty DOS-we i ACL-owe nie mają specjalnego znaczenia, to ich brak potrafi rozjechać profil użytkownika.
  13. Bardzo łatwo (i warto) jest wykorzystać LDAP do uwierzytelniania w MediaWiki.

Całość jest całkiem skomplikowana do ogarnięcia, ale da radę. Korzyści ogromne - w końcu jedno miejsce z kontami i grupami, bez dublowania się na świat Uniksa i Samby. Jedno miejsce kontroli uprawnień użytkowników oraz zarządzania stacjami roboczymi. Możliwość rozwoju i wykorzystania danych w katalogu do innych celów (innych systemów). W końcu jest to spójne. Skomplikowane, ale spójne i profesjonalne.

Materiały:

Wysłano w Blog - Linux i Unix | Tags: , , , , , |

Adres dla trackback. RSS dla komentarzy w tym wpisie.

Liczba komentarzy: 8

  1. Adrian Says:

    Witam, widzę ze Panu zajęło to 1 dzień a ja już walcze z tym tydzień i nie chce działać jak należy. Zgadzam się zupełnie ze zdaniem “Poradników w sieci troszkę jest - żaden nie rozwiązuje sprawy od A do Z.” - większość dotyczy wersji 2.x a aktualna wersja to 3.x Mam pytanie czy można o kilka drobnym wskazówek w konfiguracji tego całego bajeru? Samba jako PDC i logowanie sie userów z W2k działa OK ale już podpięcie pod LDAP to jeszcze ani razu mi się nie udało i walcze z tym od tygodnia. Widzę, że Pan tak jak ja uzywa FreeBSD to już połowa sukcesu choć ja w wersji 7.0. Proszę o odpowiedź czy można by liczyć na Pana pomoc, lub w najgorszym wypadku zapłacę za wiedzę.

  2. kozik Says:

    Powyżej w notce jest trochę wskazówek :) . Jeśli potrzeba konkretnych informacji, to potrzebne jest konkretne pytanie. Tak czy inaczej podstawą przy próbie spięcia Samby i usług katalogowych jest patrzenie w logi. Domyślne loglevel OpenLDAP-u wystarczy by widzieć zapytania i ich wyniki (domyślnie loguje do local4).

    Co do mojej konfiguracji - to było Gentoo, nie BSD :) .

  3. Adrian Says:

    obawiam się ze pytań będzie dość sporo więc chyba sobie odpuszczę z zawracaniem Ci głowy. Jedno takie proste pytanie:
    net groupmap add ntgroup=”Domain Admins” unixgroup=ntadmin rid=512 type=d

    czy jezeli uzywam polskiej wersji językowej Windowsa 2000 to za ntgroup wpisuje “Administratorzy” czy “Domain Admins”?

  4. kozik Says:

    Jeśli chodzi o administratorów domeny, to “Domain Admins” i to niezależnie czy to Win2k czy XP czy Win2k3 oraz jaki język - to są już domyślne ustawienia domeny NT4/Active Directory (pełna lista dla AD)

  5. Adrian Says:

    1) czy jezeli hostname na ktorym stoi samba i ldap to students.domena.pl to jako domene w sambie tez musze ustawiac students.domena.pl czy moze to byc zupelnie inna nazwa?
    2) czy jak phpLDAPadmin wykrył mi sambe i utworzyl gałązkę z domeną to muszę budować wszystko w tej gałęzi (tak wnioskuje z Twojego opisu, ale wole sie upewnić) ?

  6. kozik Says:

    1. Domena Samby (tudzież Windowsowa grupa robocza) mogą być dowolne i w żaden sposób niezwiązane z fizyczną nazwą maszyny.

    2. Do swojego katalogu LDAP musisz wprowadzić strukturę i dane potrzebne Sambie - ona tego nie zrobi. Stąd wymagana jest instalacja/konfiguracja [b]smbldap-tools[/b] i później użycie [b]smbldap-populate[/b].

  7. Adrian Says:

    smbldap-tools zainstalowałem, skonfigurowałem, choć zdziwiła mnie jedna rzecz, po wydaniu polecenia net getlocalsid pokazuje mi SID-a dla domeny FREEBSD, a w konfigu samby jak i smbldap.conf mam inną, nie wiem skąd on to bierze?

  8. Adrian Says:

    ok sam sobie odpowiem, juz znalazlem: nazwe pobiera w pliku smb.conf ze zmiennej netbios name

Dodaj komentarz




Uwaga: Włączona jest moderacja komentarzy, więc nowy komentarz nie ukaże się bezpośrednio po jego wysłaniu.

Uwaga: Działa filtr antyspamowy. Jeśli umieścisz w komentarzu odnośniki, to może on zostać błędnie zakwalifikowany jako spam.