Автор Тема: Миграция с ALT домена на Active Directory [решено]  (Прочитано 39665 раз)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Всем привет!

Имеется ALT домен, необходимо перейти на Active Directory (SambaDC).

В связи с этим возникло несколько вопросов:

- как перенести пользователей с сохранением UID/GID
- как перенести доменные группы с сохранением GID
- какие действия потребуется выполнить на имеющихся клиентах, введённых в ALT домен (желательно как-то это дело автоматизировать)

Рассчитываю на то, что кто-то уже решал подобное и может подсказать правильное направление.

--

На тестовом стенде с настройкой нового домена Active Directory особых проблем не возникло, существующие клиенты легко добавляются в новый домен. Но возникла некоторая проблема с добавление пользователей. Я добавил одного пользователя через веб-интерфейс (petrov), а двух других (ivanov, sidorov) через терминал, введя команды:
samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@stand.alt'
samba-tool user setexpiry ivanov --noexpiry

На клиентах об этих пользователях выводится несколько отличающаяся информация:
$ id ivanov
uid=122601104(ivanov) gid=122600513(domain users) группы=122600513(domain users),
100(users),80(cdwriter),22(cdrom),81(audio),471(video),19(proc),83(radio),478(camera),71(floppy),
498(xgrp),499(scanner),14(uucp),490(vboxusers),468(fuse)
$ id petrov
uid=122601105(petrov) gid=122600513(domain users) группы=122600513(domain users),
122601107(cdrom),122601110(radio),122601106(cdwriter),122601109(proc),122601108(audio),
122601113(xgrp),122601114(scanner),122601115(uucp),122601111(camera),122601112(floppy),
100(users),80(cdwriter),22(cdrom),81(audio),471(video),19(proc),83(radio),478(camera),71(floppy),
498(xgrp),499(scanner),14(uucp),490(vboxusers),468(fuse)
$ id sidorov
uid=122601116(sidorov) gid=122600513(domain users) группы=122600513(domain users),
100(users),80(cdwriter),22(cdrom),81(audio),471(video),19(proc),83(radio),478(camera),71(floppy),
498(xgrp),499(scanner),14(uucp),490(vboxusers),468(fuse)

Мне непонятно, почему через веб-интерфейс добавились дублирующиеся системные группы...
Нужны ли они вообще ? Как было задумано ?

Из вывода также вижу, что для Active Directory номера UID начинаются с 122601100. Что если я заменю их на UID характерные для ALT домена (5000+), чтобы существующие пользователи имели доступ к своим домашним каталогам на клиентах ?

При этом мне не удалось даже увидеть в веб-интерфейсе номера UID, присвоенные пользователям. Не смог я и поменять им пароль (ivanov, sidorov), после попытки сохранить изменения получаю ошибку:
Failed to modify user ': 0JjQstCw0L0g0JjQstCw0L3QvtCy': - No such Base DN: CN=: 0JjQstCw0L0g0JjQstCw0L3QvtCy,CN=Users,DC=base,DC=ru

У этих же двух пользователей, которых я добавил через терминал, поля ФИО не поддаются редактированию, эти поля отключены для изменений. Ну а пользователем petrov я не смог вообще войти в систему на клиенте - неверный логин или пароль.

В дальнейшем, я так предполагаю, мне всё равно может потребоваться управление доменными пользователями и/или группами: где-то добавить несколько пользователей в доменную/системную группы, где-то удалить, а где-то добавить нового пользователя и отредактировать какую-то информацию существующего (фамилия, имя, пароль и т.п.). Через что удобней и проще будет такое сделать ? А пакетное добавление пользователей ?

Вопросов, конечно, же намного больше, но планирую изучить для начала их самостоятельно, при необходимости буду обращаться в эту тему.

Здесь же прикреплю полезные, на мой взгляд, ссылки:

https://www.altlinux.org/ActiveDirectory/DC
https://www.altlinux.org/SSSD/AD
https://forum.altlinux.org/index.php?topic=37322.0
https://wiki.samba.org/index.php/Adding_users_with_samba_tool
https://support.symantec.com/en_US/article.TECH83893.html
https://www.samba.org/samba/docs/current/man-html/samba-tool.8.html
https://rtfm.co.ua/openldap-rezervnoe-kopirovanie-i-vosstanovlenie-utility-slapcat-slapadd-i-ldapsearch-ldapadd/
http://xgu.ru/wiki/man:ldapmodify
https://forum.altlinux.org/index.php?topic=31764.msg225847#msg225847
https://pro-ldap.ru/forum/index.php?topic=460.0
http://wiki.etersoft.ru/Krb5KDC
https://smb-conf.ru/pdbedit-samba-user-account-management-tool.html
http://reals.org.ua/linux/samba-users-migration-tdbsam-to-samba4-ad/
https://wiki.samba.org/index.php/Migrating_a_Samba_NT4_domain_to_a_Samba_AD_domain_(classic_upgrade)
https://discussions.apple.com/thread/131867?answerId=661964022#661964022
http://web.mit.edu/kerberos/krb5-1.11/doc/admin/admin_commands/kdb5_util.html
https://groups.google.com/forum/#!msg/linux.samba/7GGco_xXON8/O6iyVyMfDAAJ
https://wiki.samba.org/index.php/Changing_the_IP_Address_of_a_Samba_AD_DC
https://wiki.samba.org/index.php/DNS_Administration
https://www.tecmint.com/create-shared-directory-on-samba-ad-dc-and-map-to-windows-linux/
« Последнее редактирование: 03.09.2019 16:33:03 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #1 : 07.09.2018 12:01:13 »
- как перенести пользователей с сохранением UID/GID
- как перенести доменные группы с сохранением GID
- какие действия потребуется выполнить на имеющихся клиентах, введённых в ALT домен (желательно как-то это дело автоматизировать)
а) Выгрузить через slapcat базу
б) распарсить и вытащить нужные значения (получится все, кроме паролей)
в) добавить пользователей и группы с помощью samba-tool group add --gid-number= и samba-tool user add --uid-number=
Цитировать
Рассчитываю на то, что кто-то уже решал подобное и может подсказать правильное направление.
Вряд ли кто-то решал, но вполне нормально скриптуется.
Цитировать
возникла некоторая проблема с добавление пользователей. Я добавил одного пользователя через веб-интерфейс (petrov), а двух других (ivanov, sidorov) через терминал, введя команды:
Естественно. Нужно пользователя добавить в группу Domain Users, тогда roleset ему присвоит системные группы.
Цитировать
Из вывода также вижу, что для Active Directory номера UID начинаются с 122601100. Что если я заменю их на UID характерные для ALT домена (5000+), чтобы существующие пользователи имели доступ к своим домашним каталогам на клиентах ?
Не должно вызвать проблем, хотя мы не проверяли.
Цитировать
При этом мне не удалось даже увидеть в веб-интерфейсе номера UID, присвоенные пользователям. Не смог я и поменять им пароль (ivanov, sidorov), после попытки сохранить изменения получаю ошибку
Для пользователей, заведённых через веб-интерфейс? Или для заведённых вручную? Если второе — чему удивляться?
Цитировать
В дальнейшем, я так предполагаю, мне всё равно может потребоваться управление доменными пользователями и/или группами: где-то добавить несколько пользователей в доменную/системную группы, где-то удалить, а где-то добавить нового пользователя и отредактировать какую-то информацию существующего (фамилия, имя, пароль и т.п.). Через что удобней и проще будет такое сделать ?
RSAT.
Цитировать
А пакетное добавление пользователей ?
Своими скриптами.
Андрей Черепанов (cas@)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #2 : 07.09.2018 12:58:09 »
а) Выгрузить через slapcat базу
б) распарсить и вытащить нужные значения (получится все, кроме паролей)
в) добавить пользователей и группы с помощью samba-tool group add --gid-number= и samba-tool user add --uid-number=
Примерно также, только через ldapsearch вроде бы, я как-то уже переносил с одного ALT домена на другой ALT домен.

Естественно. Нужно пользователя добавить в группу Domain Users, тогда roleset ему присвоит системные группы.
Так как правильно должно быть ?
Для чего используются эти группы:
22601107(cdrom),122601110(radio),122601106(cdwriter),122601109(proc),122601108(audio),
122601113(xgrp),122601114(scanner),122601115(uucp),122601111(camera),122601112(floppy)
Ведь есть системные с UID <500.

Для пользователей, заведённых через веб-интерфейс? Или для заведённых вручную? Если второе — чему удивляться?
Заведёнными вручную я могу хотя бы войти в систему, а тех, которых создаю через веб-интерфейс, я вообще не могу ими авторизоваться - неправильный логин или пароль.

В общем с пользователями так и не понял... Если создаю вручную, то меня это в принципе устраивает, тем более пакетно такими же командами и буду создавать. Почему пользователи, которых создал через веб-интерфейс, не могут авторизоваться в системе - неясно... Если можно через RSAT работать с пользователями, тогда на добавление/удаление/редактирование данных пользователей в веб-интерфейсе можно забить.

Спасибо за ответ, буду пробовать в ближайшее время.
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #3 : 07.09.2018 15:11:58 »
Для чего используются эти группы:
22601107(cdrom),122601110(radio),122601106(cdwriter),122601109(proc),122601108(audio),
122601113(xgrp),122601114(scanner),122601115(uucp),122601111(camera),122601112(floppy)
Ведь есть системные с UID <500.
И я не знаю, зачем их дублировать.
Цитировать
Заведёнными вручную я могу хотя бы войти в систему, а тех, которых создаю через веб-интерфейс, я вообще не могу ими авторизоваться - неправильный логин или пароль.
А если завести пользователя и поменять через samba-tool user setpassword ему пароль — входят?
Андрей Черепанов (cas@)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #4 : 07.09.2018 17:54:11 »
И я не знаю, зачем их дублировать.
Так может в веб-интерфейсе происходит что-то не то и так быть не должно ? Проверил несколько пользователей, всегда один результат: пользователь есть, поля можно редактировать, но войти под этим пользователем нельзя. Что это за группы и почему они дублируются, я тоже не могу понять, пробовал исключить этого пользователя из этих групп, но тоже не получается потом войти в систему:
# samba-tool group removemembers camera petrov
Removed members from group camera
И из 'id petrov' никакие группы не пропадают после исключения пользователя из них.

Вообще 'samba-tool group listmembers <groupname>' об этих системных группах говорит, что никто в них не состоит - всегда пустой ответ.

Ещё заметил, что пользователь созданный в веб-интерфейсе, попал в группу Users:
# samba-tool group listmembers Users
S-1-5-11
Domain Users
S-1-5-4
petrov
Я решил оттуда его тоже удалить (так как вручную созданные в неё не попадают):
# samba-tool group removemembers Users petrov
Removed members from group Users
# samba-tool group listmembers Users
S-1-5-11
Domain Users
S-1-5-4
Но это тоже не решило проблему со входом в систему под этим пользователем.

Естественно. Нужно пользователя добавить в группу Domain Users, тогда roleset ему присвоит системные группы.
Сейчас глянул заодно, у меня, оказывается, все пользователи туда попадают по умолчанию, независимо добавляю я их вручную или через веб-интерфейс:
# samba-tool group listmembers 'Domain Users'
ivanov
Administrator
krbtgt
korovin
petrov

В общем с добавлением пользователей через веб-интерфейс что-то не то...

PS. Один момент, прямо не относящийся к моим проблемам с добавлением пользователей, но в системе (на сервере) по умолчанию не было установлено пакета netcmdplus, из-за этого нельзя было работать в веб-интерфейсе с базой Active Directory, а именно добавить пользователей и группы. Правда, нажав кнопку "Выбрать источник", было написано, что не хватает именно этого пакета для работы. Вот не знаю, нужно об этом сообщать как об ошибке или нет...
« Последнее редактирование: 07.09.2018 17:55:47 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #5 : 07.09.2018 18:03:06 »
И из 'id petrov' никакие группы не пропадают после исключения пользователя из них.
После перезагрузки клиента всё-таки пропали эти дублирующиеся группы у petrov, но войти в систему под ним я так и не могу.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #6 : 07.09.2018 20:15:06 »
Попробовал зайти тем пользователем, которого добавил через веб-интерфейс, на Windows 7 - заходит.
Стало быть проблема со входом только на Linux.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #7 : 07.09.2018 21:19:53 »
Разобрался, в параметрах был /sbin/nologin, исправил на /bin/bash - заходит.
« Последнее редактирование: 07.09.2018 21:25:11 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #8 : 07.09.2018 21:22:41 »
Читайте инструкции.
Андрей Черепанов (cas@)

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Миграция с ALT домена на Active Directory
« Ответ #9 : 09.09.2018 16:06:49 »
На каком дистрибутиве разворачиваете?

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #10 : 09.09.2018 22:24:11 »
На каком дистрибутиве разворачиваете?
StarterKit / Server

Из вывода также вижу, что для Active Directory номера UID начинаются с 122601100. Что если я заменю их на UID характерные для ALT домена (5000+), чтобы существующие пользователи имели доступ к своим домашним каталогам на клиентах ?
Не должно вызвать проблем, хотя мы не проверяли.
Не работает, в базе то значения как надо 5000+, а вот на клиенте id всё равно показывает большие значения. Но ещё более детально постараюсь поглядеть на неделе.
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #11 : 10.09.2018 06:08:02 »
Смотреть надо про настройку sssd для указанных в базе uid.
Андрей Черепанов (cas@)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #12 : 11.09.2018 17:40:40 »
- как перенести пользователей с сохранением UID/GID
- как перенести доменные группы с сохранением GID
Migrating_a_Samba_NT4_domain_to_a_Samba_AD_domain_(classic_upgrade) всё давным-давно есть...

Опишу здесь лишь пошаговое руководство по миграции с ALT домена (за подробностями обращайтесь по ссылке выше).

--

В качестве исходного сервера использовался Кентавр 7.0.4
Все проверки проводились на Альт Сервер 8.2 [профиль: Сервер Samba-DC (контроллер AD)] + Simply Linux 8.2.0

Действия на исходном сервере

Исходный домен: base.ru

Создаём каталог для файлов:
mkdir -p /opt/base.ru/

Выгружаем имеющуюся LDAP базу пользователей в формате LDIF:
slapcat -b 'dc=base,dc=ru' -l /opt/base.ru/base.ru.ldif

Сохраняем дополнительно нужные файлы:
zip -r /opt/base.ru/openldap.zip /etc/openldap/
zip -r /opt/base.ru/samba.zip /var/lib/samba/
cp -a /etc/samba/smb.conf /opt/base.ru/

Переносим с исходного сервера каталог /opt/base.ru/ на целевой сервер в тот же каталог!

Переходим на целевой сервер

Делаем полное обновление системы (рекомендуется):
apt-get update
apt-get dist-upgrade
update-kernel
reboot

Устанавливаем пакет netcmdplus (необязательно):
apt-get install netcmdplus

Создаём временные каталоги:
mkdir -p /opt/samba.PDC/dbdir/
mkdir -p /var/lib/ldap/bases/base.ru/

Раскладываем файлы с исходного сервера в нужные каталоги:
cp -a /opt/base.ru/smb.conf /opt/samba.PDC/
unzip -jd /opt/samba.PDC/dbdir/ /opt/base.ru/samba.zip \*secrets.tdb \*schannel_store.tdb \*gencache_notrans.tdb \*group_mapping.tdb \*account_policy.tdb
yes | unzip -jd /etc/openldap/ /opt/base.ru/openldap.zip \*slapd.conf \*base.ru\*.conf

Устанавливаем правильные права на файлы:
chgrp ldap /etc/openldap/slapd.conf /etc/openldap/*base.ru*.conf

Делаем симлинк (без него slapd не стартует, наверно, баг):
ln -sf sasl2-3 /usr/lib64/sasl2

Запускаем сервис slapd, чтобы он сформировал требуемые суффиксы, и тут же останавливаем:
service slapd start
service slapd stop

Приводим значение параметров realm и workgroup в файле /opt/samba.PDC/smb.conf к аналогичному виду:
[global]
realm = BASE.RU
workgroup = BASE

В файле /opt/base.ru/base.ru.ldif находим строчку:
dn: sambaDomainName=BASE.RU,dc=base,dc=ruи приводим её к виду:
dn: sambaDomainName=BASE,dc=base,dc=ru
Выполняем импорт базы LDAP:
slapadd -l /opt/base.ru/base.ru.ldif

Устанавливаем правильные права на файлы:
chown ldap: -R /var/lib/ldap/bases/base.ru/

Запускаем сервис slapd:
service slapd start

Удаляем имеющуюся конфигурации Samba на новом сервере (желательно):
rm -f /etc/samba/smb.conf
rm -rf /var/lib/samba
rm -rf /var/cache/samba
mkdir -p /var/lib/samba/sysvol

Запускаем процесс миграции домена:
samba-tool domain classicupgrade --dbdir=/opt/samba.PDC/dbdir/ --realm=base.ru --dns-backend=SAMBA_INTERNAL /opt/samba.PDC/smb.conf

Цитировать
Примечание. При появлении сообщения в логе:
smbldap_search_domain_info: Problem during LDAPsearch: Timed outНеобходимо увеличить таймаут для операций с LDAP, добавив в файл /opt/samba.PDC/smb.conf в раздел [global]:
[global]
ldap timeout = 50
Подробности в теме https://forum.altlinux.org/index.php?topic=42265.msg335358#msg335358

Останавливаем ненужные сервисы:
service slapd stop
service bind stop
chkconfig bind off

Запускаем Samba:
service samba start
chkconfig samba on

Подчищаем за собой:
rm -rf /opt/base.ru/ /opt/samba.PDC/ /var/lib/ldap/

Не забываем назначить свой пароль Administrator:
samba-tool user setpassword administrator

На этом процесс миграции завершён, можно пробовать ввести клиентов в домен Active Directory.

Самое главное переносятся сами пользователи и пароли! ФИО почему-то по дороге потерялись, группы тоже в пролёте.

Смотреть надо про настройку sssd для указанных в базе uid.
uidNumber при миграции переносится, но команда id всё также показывает другие значения. Буду смотреть дальше...

PS. Если кто проверит у себя и отпишется о результате, буду рад.  ;-)
« Последнее редактирование: 01.03.2019 11:35:26 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: Миграция с ALT домена на Active Directory
« Ответ #13 : 12.09.2018 17:42:35 »
А если потребуется перенести ALT домен на Active Directory с изменением имени домена ? Например был BASE.RU, а нужно получить NEWDOMAIN.RU ?

Необходимо и достаточно!

Перед выполнением импорта базы LDAP (команда slapadd ...) найти в файле /opt/base.ru/base.ru.ldif строки со старым DN:
dn: sambaDomainName=BASE.RU,dc=base,dc=ru
sambaDomainName: BASE.RU
и привести их к виду:
dn: sambaDomainName=NEWDOMAIN,dc=base,dc=ru
sambaDomainName: NEWDOMAIN

Перед этапом миграции домена (команда samba-tool domain classicupgrade ...) изменить в файле /opt/samba.PDC/smb.conf значение параметра workgroup на желаемое имя нового домена:
[global]
realm = BASE.RU
workgroup = NEWDOMAIN
В данном случае значение параметра realm не имеет значения, поэтому изменять его не требуется.

При миграции указать новое имя домена в параметре --realm:
samba-tool domain classicupgrade --dbdir=/opt/samba.PDC/dbdir/ --realm=newdomain.ru --dns-backend=SAMBA_INTERNAL /opt/samba.PDC/smb.conf

В остальном процедура миграции домена ничем не отличается от описанного выше.
При этом также переносятся как пользователи, так и пароли.
« Последнее редактирование: 12.09.2018 17:48:39 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
ФИО почему-то по дороге потерялись
Оставлю здесь всё-таки скрипт, вдруг кому-то пригодится.

На исходном сервере нужно сделать:
ldapsearch -LLL -b 'dc=base,dc=ru' -x -H 'ldap://localhost' '(objectClass=posixAccount)' uid givenName sn cn > users.ldif

Натравить скрипт на файл users.ldif:
#!/bin/sh

users=users.ldif
modify=modify.ldif
domain='base.ru'
dc='DC=base,DC=ru'

rm -f $modify

grep -E ^'((uid|givenName|sn|cn):|$)' $users | while read line; do
if [ ! -z "$line" ]; then
field=$(echo -n "$line" | sed 's|:.*||')
value=$(echo -n "$line" | sed 's|.*: ||')
export $field="$value"
else
cat << EOF >> $modify
dn: CN=$uid,CN=Users,$dc
changetype: modify
replace: mail
mail: $uid@$domain
-
replace: sn
sn: $sn
$(if [ ! -z $givenName ]; then printf -- "-\nreplace: givenName\ngivenName: %s" "$givenName"; fi)

EOF

unset cn
unset sn
unset uid
unset givenName
unset field
unset value

fi
done

Перенести файл modify.ldif на целевой сервер, выполнить миграцию, влить данные из файла modify.ldif в базу (необходимо предварительно установить пакет ldb-tools):
ldbmodify -H /var/lib/samba/private/sam.ldb modify.ldif

Запустить Samba:
service samba start

В принципе перенос этих полей совсем необязателен, все основные параметры переносятся штатным скриптом при миграции.

PS. Не очень понравилось, что 'cn=' теперь в имени DN , но если его не поправить, то такой красоты не увидеть (см. вложения) - будет просто сухой логин  :'-(
« Последнее редактирование: 26.09.2018 18:23:14 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)