Samba 4.0.0 — путь в девять лет до первого стабильного релиза ветки с поддержкой функций Active Directory
Вопреки тоннам скепсиса, отсутствию внутри сообщества веры в доведение проекта до энтерпрайз-уровня, многочисленной критике выбранных при реализации решений и часто встречавшемуся непониманию необходимости в проекте, но в то же время исключительно благодаря кропотливому труду сплочённой команды разработчиков и тестировавших программный продукт сисадминов-энтузиастов, это наконец свершилось сегодня, 11 декабря 2012 года, - вышел первый стабильный выпуск четвёртой ветки файлового и принт-сервера Samba с поддержкой Active Directory Domain Services.
Сообщение об этом знаменательном событии было опубликовано в рассылке samba-announce релиз-менеджером Samba Team, Каролин Зигер (Karolin Seeger).
Прежде чем рассказать о возможностях, которые открывает релиз Samba 4.0.0, давайте вспомним историю разработки этого проекта. Если вы провели всё это время вместе с разработчиками Samba Team, то пролистайте с десяток абзацев вниз.
Можно предположить, что толчком к началу разработки Samba4 в марте 2003 года стал выход в это же время ОС Microsoft Windows Server 2003, которая содержала улучшенную в сравнении с Microsoft Windows Server 2000 версию Active Directory, Open Source реализацией которой должна была стать (и стала) Samba4. Однако скорее всего это не так, и разработчики Samba Team, представляя крупные ИТ-компании, имеющие в пакете услуг поддержку комплексных интегрированных решений на базе Unix/Linux - Red Hat, IBM, Cisco, SerNet и прочие, - держали в голове многочисленные запросы от клиентов, которые хотели от файлового и принт-сервера Samba нечто большего, а именно единого решения для управления пользователями, а это single-sign-on, разделение привилегий, групповые политики и т. п., как для зоопарка ОС семейства Microsoft Windows, так и для рабочих станций с ОС Linux, сочетая в себе с одной стороны максимальное подобие и совместимость с продуктами корпорации из Редмонда, а с другой - предоставляя привычные для nix-систем механизмы настройки и обслуживания.
Итак, 13 августа 2003 года Эндрю Триджел (Andrew Tridgell) официально начал долгий и нелёгкий путь разработки Samba4 созданием отдельной ветки тогда ещё в CVS-репозитории (Samba Team перейдёт с CVS на Subversion в апреле 2004, чтоб затем в январе 2008 перейти с Subversion на Git), о чём в рассылке samba-cvs осталось памятное свидетельство коммита. В тот же вечер в рассылке samba-technical Триджел опубликовал письмо «Samba4 initial code», в котором сообщалось буквально следующее:
As some of you have noticed we have released a first
testing version of the Samba4 code in a separate cvs area called
'samba4' on samba.org.
First off I want to explain that this is a long long way from being
production code. It is very incomplete in many areas and downright
broken in others. The main aim of this release is to give everyone an
idea of the general architecture that is planned for Samba4.
С перечнем целей и задач, которые поставили перед собой более девяти лет назад разработчики на то время Samba 2.2.x и только вышедшей ветки Samba 3.0.x, можно ознакомиться в презентации Эндрю Бартлета Samba 4 Status Update, опубликованной на международной конференции SambaXP 2004 вскоре после начала разработки, и в статье Фолкера Лендеке (Volker Lendecke) Advances in Samba4: помимо совместимости с Active Directory во главу угла ставилось полная реализация всех требуемых протоколов, асинхронность операций, инфраструктура тестирования для выявления регрессий, автогенерация RPC-инфраструктуры.
В конце 2004 года Samba4 преодолела важную стадию: Эндрю Триджел установил её своей жене Сьюзен в качестве файлового сервера для важных (sic!) документов. А в начале 2006 во время Linux.conf.au в Новой Зеландии был представлен technology preview 1 (TP1), с реализованными LDAP-каталогом и LDAP-бэкендами, центром распространения ключей Kerberos (KDC), виртуальной файловой системой (VFS) для добавления необходимых и адаптации имеющихся атрибутов файлов в виде необходимом для клиента (речь о NT ACL's), и даже JavaScript-интерфейсом!
Итого на пути к последней перед стартом alpha-тестирования preview-версии TP5 в июне 2007 года уже работал ввод и логин в домен, базовая поддержка SMART-карт, LDAP-бэкенд в реализации Fedora DS. Примерно к тому же времени появились наработки по поддержке протокола SMB2, кластеризации при помощи CTDB и альтернативе для сервера Microsoft Exchange - OpenChange, а Стефан Метцмахер (Stefan Metzmacher) опубликовал бакалаврские тезисы по репликации ActiveDirectory с использованием DRSUAPI. Как и год назад, во время доклада на конференции SambaXP 2006, поддержка групповых политик (GPO) ещё не была реализована, простейшая её реализация появилась лишь через девять месяцев после TP5 в первой альфе Samba4 в сентябре 2007.
Последующие альфы выпускались без чёткого соблюдения какого-либо цикла, и между релизами проходило обычно три, шесть, а то и девять месяцев. К третьей альфе JavaScript-интерфейс заменили биндинги на Python, костыли для сборки на Perl заменили на GNU Make, но Makefile писали вручную, окончально перехали на Git, а beta1 запланировали на конец 2008 года. В то же время поддержка LDAP-бэкендов уже тогда стала достаточно непростой из-за ряда особенностей в реализации LDAP от Microsoft. Как окажется позднее, более половины из перечисленного разработчикам взбредёт в голову переделать ещё раз, в том числе и отложить дату перехода к бета-тестированию, как окажется, на четыре года. Некоторые решения станут компромисом по причине отсутствия полноценных реализаций, запланированных быть написанными с чистого листа, как например франкенштейн «Franky», в последствии трансформировавшийся в s3fs, - сшитый из третьей и четвёртой ветки для работы AD-реализации из кодовой базы Samba4, а файлового сервера, наново написанный код которого в Samba4 не содержал многих требуемых функций, и принт-сервера, которого просто-напросто ещё не было, из отлаженной и оттестированной кодовой базы Samba3.
А тем временем в Microsoft не сидели сложа руки, выпустив за период 2007-2009 годов Windows Vista, Windows Server 2008 aka Longhorn, Windows 7 и Windows Server 2008 R2. Казалось бы, всё что сделано командой разработчиков Samba в рамках работы над совместимостью с 2003-им сервером теперь можно выбросить в топку, и всё придётся начинать сначала? И так с выходом каждой новой версии серверного продукта Windows? Команда Samba опровергла эти опасения, правда малость отстав, реализовав поддержку схемы совместимой с 2008-ым сервером и ввод в домен Vista/7 к выходу alpha8 в середине 2009 года. Помогло им или нет в этом решение Еврокомиссии в 2008 году, вынудившее Microsoft открыть документацию по некоторым своим проприетарным протоколам, сказать сложно, особенно с точки зрения полноты этой документации: для получения полной LDAP-схемы AD с использованием документации и не только ушло по словам Эндрю Бартлета полгода. А вот приглашения разработчиков Samba на Plugfest'ы, проводившиейся сначала Microsoft, а после отказа от этих мероприятий в Microsoft проводившиеся под эгидой SNIA, помогли выявить большое количество багов в разрабатываемом продукте.
Перевалив за десяток, альфа-версии стали весьма неплохи: всё больше добровольных альфа-тестеров писали в рассылку samba-technical об успешной сборке из исходных кодов, конфигурации (provision) и эксплуатации инсталяций Samba4 в малых и средних сетях. Сам Эндрю Бартлет неоднократно в рассылке и на конференциях SambaXP упоминал о «secret Russian production site», во время реальной продакшн-эксплуатации которого проявлялись неочевидные баги. После 16-ой альфы стабилизировался формат LDB-базы. Однако всё ещё не было встроенного сервера печати и поддержки NetBIOS - для этого необходимо было использовать сервер третьей ветки. Сервер DNS до 17-ой альфы надо было поддерживать самостоятельно в соответствии с Samba4/Howto, лишь в 18-ой версии появился выбор между встроенным DNS-сервером, DLZ-плагином к версиям BIND старше 9.8 и поддержкой файлов зон по старинке. Существовала и проблема с синхронизацией времени для Kerberos из-за надстроек Microsoft для Secure NTP: временным решением до момента интеграции NTP-сервера было использование хука к NTPd. Зато в 17-ой альфе появилась замечательная утилита samba3upgrade, позволяющая мигрировать с DC на Samba3 на Samba4. В марте 2010 после длительных дебатов Cmake vs SCons vs else состоялся переход на фреймворк сборки Waf, который помог задействовать ряд интересных приёмов при сборке проекта, связанных с разрешением зависимостей и линковкой. По состоянию на 2010 год достаточно стабильно работала DRS-репликация, GPO, удалённые профили и сайты, а во время проведения конференции SambaXP 2011 Мэтью Пато (Matthieu Patou) даже сообщил об успешной попытке расширения схемы Samba4 для поддержки Zarafa. Не обошлось и без непопулярных решений: так Эндрю Бартлет подняв вопрос о целесообразности поддержки LDAP-бэкендов, которые многие видели как способ связать воедино существующие решения на базе OpenLDAP и возможности Active Directory, предоставляемые Samba4, поднял волну негодования и разочарования среди потенциальных внедренцев проекта.
В таком состоянии Samba4 открыла счёт третьему десятку альфа выпусков весной 2012 года, давно получив в среде интересующихся несмотря на довольно стабильную работу прозвище «Вечная альфа». Но вечно такое положение вещей в проекте продолжаться не могло: сотрудничество с такими интеграторами как SerNet, Univention GmbH, до недавнего времени Resara LLC и другими, давало свои плоды в виде давления на разработчиков. Подобные этому пресс-релизы давали дополнительную надежду на коммерческую поддержку решений на базе Samba4 конечным пользователям. И Эндрю Бартлет сдался в конце 2011 года, заявив, что готов выпустить Samba 4.0.0 пускай с неполной функциональностью, но без приевшихся приставок греческого алфавита.
Заявленное тогда окно для релиза в три месяца по правде говоря выглядело изначально недостаточным - в итоге понадобился ровно год. Этот год был весьма напряжённым, особенно его вторая половина после начала подготовки beta-выпусков в мае 2012 года. Первая beta, выйдя в начале июня, содержала встроенные серверы NTP и DNS, позволяя для последнего в качестве альтернативы использовать механизм DLZ для ISC Bind 9.8/9.9; два файловых сервера: из четвёртой (NTVFS) и третьей (s3fs) ветки, с сервером третьей ветки по умолчанию. Восьмой beta-выпуск в конце августа завершил «летнюю» beta-серию Samba4 реализацией печати (spools-траффик обслуживает сервер третьей ветки благодаря включенному по умолчанию s3fs) и возможностью эксплуатации при наличии MIT Kerberos в системе (как в Fedora, например) благодаря встроенному Heimdal и overlink'ингу. Компиляция же с MIT Kerberos вместо Heimdal не позволит на данный момент иметь в Samba4 возможности AD DC.
RC1 не заставил себя долго ждать и начал осень релиз-кандидатов с добавления поддержки версии протокола SMB3 и включения её по умолчанию, правда без поддержки multi-channel, как и без поддержки lease для версии 2.1 протокола. Завершилась напряжённая осенняя пора чистки багов 4 декабря 2012 года с выходом RC6 и запланированным релизом Samba 4.0.0.
Теперь собственно о релизе:
Samba4 включает в себя:
- LDAP-сервер, хранящий схемы в формате LDB;
- имплементацию Kerberos 5 KDC Heimdal;
- две альтернативы для файлового сервера:
- NTVFS - асинхронный стекируемый файловый сервер с поддержкой POSIX-бэкенда, разработанный с чистого листа специально для Samba4;
- s3fs - файловый сервер третьей ветки Samba, включенный по умолчанию в Samba 4.0.0 как более функциональный и оттестированный;
- сервер печати силами сервера третьей ветки Samba;
- сервер доменных имён (DNS) посредством:
- встроенного DNS-сервера;
- DLZ-плагина к ISC BIND версии 9.8 и старше;
- NTP-сервер с функцией цифровой подписи посредством ntpd >= 4.2.6;
- Python Scripting Interface, который позволяет получить доступ к внутренностям Samba4, собственно поэтому часть инструментов для управления контроллером домена написаны на Python.
В Samba 4.0.0 разработчики реализовали и оттестировали до различной степени готовности следующие функции:
- стабильные:
- преобразование идентификаторов пользователей и групп из представления Unix в представление Windows (Winbind);
- логин учётных записей пользователей в домен;
- учётные записи рабочих станций;
- групповые политики (GPO);
- тестируется:
- DRS-репликация (известны случаи отказов при репликации);
- на этапе завершения внедрения:
- поддержка протоколов SMB2 и SMB3 и в файловом сервере NTVFS, и в файловом сервере s3fs, с протоколом по умолчанию SMB3;
- запуск файлового и принт-сервера третьей ветки не отдельным процессом, а форком из процесса samba с настроенной аутентификацией файлового сервера в домене Samba4;
- в активной разработке:
- встроенный DNS-сервер (пока без поддержки DNSSEC);
- доверительные отношения (Domain Trusts);
- консольная утилита для администрирования samba-tool (могут также использоваться встроенные в Windows средства администрирования AD);
- оригинальный файловый сервер четвёртой ветки NTVFS (не содержит полной реализации всех необходимых атрибутов);
- сервер печати (пока посредством сервера третьей ветки);
- RODC (Read Only DC);
- поддержка схем Microsoft Exchange.
Как и много лет назад, каждый желающий протестировать Samba4 должен начать с прочтения статьи Samba4/HOWTO на Samba-wiki. За годы разработки в базе знаний проекта количество статей по Samba4 выросло до двух сотен и содержит почти всю историю разработки от первых планов и двухнедельных фантазий Эндрю Бартлета и Джелмера Верноий (Jelmer Vernooij) до текущего статуса проекта и многочисленных руководств.
Получить поддержку и узнать подробнее о статусе проекта как всегда можно в IRC-канале #samba и рассылке samba, а узнать о последних новостях, успехах, проблемах в разработке и присоединиться к Samba Team соответственно в IRC-канале #samba-technical и рассылке samba-technical.
И как заведено: «Our Code, Our Bugs, Our Responsibility. The Samba Team.»
Автор новости — Андрей Шинкарчук
>>> Подробности