Представлен релиз Samba 4.14.0, продолживший развитие ветки Samba 4 с полноценной реализацией контроллера домена и сервиса Active Directory, совместимого с реализацией Windows 2000 и способного обслуживать все поддерживаемые Microsoft версии Windows-клиентов, в том числе Windows 10. Samba 4 является многофункциональным серверным продуктом, предоставляющим также реализацию файлового сервера, сервиса печати и сервера идентификации (winbind).
Ключевые изменения в Samba 4.14:
- Проведена значительная модернизация слоя VFS. По историческим причинам код с реализацией файлового сервера был завязан на обработку файловых путей, которая применялась в том числе для протокола SMB2, переведённого на использование дескрипторов. В Samba 4.14.0 код, обеспечивающий доступ к файловой системе сервера, был переработан для использование файловых дескрипторов, а не файловых путей. Например, задействован вызов fstat() вместо stat() и SMB_VFS_FSTAT() вместо SMB_VFS_STAT().
- Повышена надёжность публикации принтеров в Active Directory и расширена информация о принтерах, передаваемая в Active Directory. Добавлена поддержка Windows-драйверов принтеров на системах ARM64.
- Предоставлена возможность использования групповых политик (Group Policy) для клиентов Winbind. Администратор Active Directory теперь может определить политики, меняющие настройки sudoers или добавляющие периодический запуск заданий через cron. Для включения применения групповых политик для клиента в smb.conf предусмотрена настройка ‘apply group policies’. Применение политик производится каждые 90-120 минут. В случае проблем имеется возможность отменить изменения командой “samba-gpupdate –unapply” или применить повторно командой “samba-gpupdate –force”. Для просмотра политик, которые будут применены к системе, можно использовать команду “samba-gpupdate –rsop”.
- Повышены требования к версии языка Python. Для сборки Samba теперь обязательно наличие Python как минимум версии 3.6. Поддержка сборки с более старыми выпусками Python прекращена.
- В утилите samba-tool реализованы средства для управления объектами в Active Directory (пользователями, компьютерами, группами). Для добавления нового объекта в AD теперь разрешено использовать команду “add”, помимо “create”. Для переименования пользователей, групп и контактов обеспечена поддержка команды “rename”. Для разблокировки пользователей предложена команда ‘samba-tool user unlock’. В командах ‘samba-tool user list’ и ‘samba-tool group listmembers’ реализованы опции “–hide-expired” и “–hide-disabled” для скрытия просроченных или отключённых учётных записей пользователей.
- В компоненте CTDB, отвечающем за работу кластерных конфигураций, проведена чистка неполиткорректных терминов. Вместо master и slave при настройке NAT и LVS предложено использовать “leader” для ссылки на основной узел в группе и “follower” для охвата остальных членов группы. Команда “ctdb natgw master” заменена на “ctdb natgw leader”. Для индикации, что узел не является ведущим, вместо “slave-only” теперь выводится флаг “follower-only”. Удалена команда “ctdb isnotrecmaster”.
Дополнительно дано разъяснение о границах применения лицензии GPL, под которой распространяется код Samba, к компонентам VFS (Virtual File System). Лицензия GPL требует открытия с теми же условиями всех производных работ. В Samba имеется интерфейс для подключения плагинов, позволяющий вызывать внешний код. Одними из таких плагинов являются VFS-модули, в которых используются единые с Samba заголовочные файлы с определением API, через который осуществляется обращение к сервиcам, реализуемым в Samba, из-за чего VFS-модули Samba должны распространяться под GPL или совместимой лицензией.
Неопределённость возникает в отношении сторонних библиотек, к которым обращаются модули VFS. В частности, высказывалось мнение, что в VFS-модулях можно использовать только библиотеки под GPL и совместимыми лицензиями. Разработчики Samba пояснили, что библиотеки не вызывают код Samba через API и не обращаются ко внутренним структурам, поэтому они не могут рассматриваться как производные работы и на них не распространяется требование поставки под лицензиями, совместимыми с GPL.