====== Samba: миграция на LDAP ====== Здесь описаны процедуры миграции c [[#MS Windows NT4 PDC|MS Windows NT4 PDC]] и [[#Samba (passdb.tdb)|Samba (passdb.tdb)]] на Samba 3 с использованием в качестве хранилища [[openldap:openldap|OpenLDAP]]. В процессе миграции демоны ''Samba'' на принимающем сервере могут быть остановлены. Для успешного завершения процесса нужно подготовить сервер [[openldap:openldap|OpenLDAP]] для приёма данных. [[samba:examples_ldap|Примеры структур Samba LDAP]] ====== MS Windows NT4 PDC ====== - Нужно создать файл: [global] workgroup = ИМЯ_ДОМЕНА_NT4 domain master = no ldap admin dn = dc=example,dc=domain,dc=com ldap suffix = dc=example,dc=domain,dc=com ldap group suffix = ou=groups ldap user suffix = ou=users ldap machine suffix = ou=computers - Добавить в домен: net rpc join -S КОНТРОЛЛЕР_ДОМЕНА -w ИМЯ_ДОМЕНА -U АДМИНИСТРАТОР_ДОМЕНА ===== Импорт данных из NT4 PDC ===== #!/bin/bash net rpc vampire ldif -S КОНТРОЛЛЕР_ДОМЕНА -s ПУТЬ_К_ФАЙЛУ_smb.conf -U АДМИНИСТРАТОР_ДОМЕНА >NT4.ldif ===== Ограничения net rpc vampire ldif ===== Не выдаётся список: ''Разрешённые рабочие станции'' (''Logon Workstations'') Решение: На ПК с [[ms_windows:ms_windows|MS Windows]] использовать для каждого нужного пользователя команду: net user ПОЛЬЗОВАТЕЛЬ /domain ===== Экспорт данных в LDAP сервер ===== Скрипт ''NT4_Split_LDIF.pl'' разделяет файл ''NT4.ldif'' на следующие файлы: * ''NT4_1.ldif'' (группы и пользователи) * ''NT4_2.ldif'' (члены групп) #!/usr/bin/perl $lines=""; open(FILE,"NT4.ldif") or die $!; open(FILE_1,">NT4_1.ldif") or die $!; select FILE_1; while(){ if(/SAM_DATABASE_DOMAIN: MODIFY ENTITIES/i){ last; }else{ $lines.=$_; print "$_"; } } close(FILE_1); $lines=""; open(FILE_2,">NT4_2.ldif") or die $!; select FILE_2; while(){ if(/SAM_DATABASE_BUILTIN: ADD ENTITIES/i){ last; }else{ $lines.=$_; $_ =~ s{ou=groups,dc=examlpe,dc=domain,dc=com}{ou=groups,dc=examlpe,dc=domain,dc=com\nreplace: memberUid}; print "$_"; } } close(FILE_2); close(FILE); :!: Нужно заменить ''ou=groups,dc=examlpe,dc=domain,dc=com'' на реальный путь к группам. ===== Исправления ===== Нужно найти наибольший ''RID'' для пользователя и записать его в поле ''sambaNextRid'' записи домена. ====== Samba (passdb.tdb) ====== Здесь описаны действия по миграции данных из старых версий Samba, в которых использовался файл ''passdb.tdb''. 1. Надо задать пароль доступа к LDAP серверу smbpasswd -w passwd 2. Создать файл: [global] ldap ssl = off passdb backend = ldapsam:ldap://АДРЕС_СЕРВЕРА_LDAP/ ldap admin dn = cn=admin,dc=example,dc=domain,dc=com ldap suffix = dc=example,dc=domain,dc=com ldap group suffix = ou=groups ldap user suffix = ou=users ldap machine suffix = ou=computers 3. Выполнить команду: pdbedit -s ПУТЬ_К_ФАЙЛУ_smb.conf -i tdbsam://ПУТЬ_К_ФАЙЛУ_passdb.tdb -e ldapsam:ldap://АДРЕС_СЕРВЕРА_LDAP 4. Группы нужно брать из файла ''/etc/groups/'' :!: Для контроля над изменениями данных (в период тестирования) на старом сервере можно использовать команду: pdbedit -L -w >old_`date '+%Y-%m-%d'`.txt ===== Дополнительные команды ===== :!: Должны выполнятся на контроллере домена (источнике) * Дамп ''passdb.tdb''pdbedit -Lw * Дамп ''SID''pdbedit -L -v * Получение ''SID'' контроллера домена|net getlocalsid ====== Ссылки ====== [[https://www.samba.org/samba/docs/man/Samba-Guide/ntmigration.html|Chapter 9. Migrating NT4 Domain to Samba-3]] {{tag>File_Server Samba LDAP Linux MS_Windows}}