Samba jako kontroler domeny (PDC) z LDAP
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:
- lokalne, czyli zastąpić /etc/passwd i /etc/shadow;
- Samby, czyli userów i maszyn w sieci Windows.
Kilka myśli:
- Poradników w sieci troszkę jest - żaden nie rozwiązuje sprawy od A do Z.
- Instalacja i wstępna konfiguracja OpenLDAP i modułów pam_ldap/nss_ldap jest prosta.
- 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).
- phpldapadmin działa znakomicie (spora zmiana w stosunku do wczesnych wersji 0.9) - polecam.
- 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.
- Ś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.
- Debugowanie lepiej LDAP-a nie przez logi, ale poprzez uruchomienie jego procesu w terminalu, np.:
/usr/lib/openldap/slapd -f /etc/openldap/slapd.conf \Przy czym jak zapomnisz o ustawieniu UID/GID procesu, to pewnie skopie się część uprawnień bazy OpenLDAP.
-u ldap -g ldap \
-h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock' \
-d 256 - 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ę.
- 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).
- Backupu, replikacji i optymalizacji indeksów katalogu jeszcze nie ruszałem…
- 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).
- 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.
- 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: linux, next, open-source, pc format, praca, wtf |

wrzesień 15th, 2008 at 14:06
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ę.
wrzesień 15th, 2008 at 14:14
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
.
wrzesień 15th, 2008 at 15:41
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”?
wrzesień 15th, 2008 at 15:53
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)
wrzesień 16th, 2008 at 9:23
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ć) ?
wrzesień 16th, 2008 at 9:30
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].
wrzesień 16th, 2008 at 9:41
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?
wrzesień 16th, 2008 at 9:49
ok sam sobie odpowiem, juz znalazlem: nazwe pobiera w pliku smb.conf ze zmiennej netbios name