Увидел свет первый стабильный релиз новой ветки Samba 3.6, в которой доведена до готовности к промышленному внедрению поддержка протокола SMB2, используемого в Windows Vista и Windows 7, добавлен новый модуль для анализа трафика, изменены некоторые влияющие на безопасность настройки по умолчанию и существенно переработана поддержка печати.
Кроме того, продолжается работа по обеспечению плавного слияния кодовых баз веток Samba 3 (winbindd и код файлового сервера) и Samba 4 (контроллер домена). В будущем планируется выпустить единый многофункциональный продукт Samba 4, который будет поддерживать бесшовную миграцию с Samba 3 и сможет выступать в роли файлового сервера, сервера печати, сервера идентификации (winbind) и совместимого с Active Directory контроллера домена.
Ключевые изменения, представленные в Samba 3.6.0:
* Поддержка SMB2 признана полностью функциональной. Через SMB2 могут работать все возможности Samba, за одним исключением - не поддерживается изменение квот при помощи утилит управления квотами Windows. Поддержка SMB2 не включена по умолчанию. Для активации SMB2 в секции "[global]" файла smb.conf необходимо указать "max protocol = SMB2". По умолчанию работа через SMB2 будет включена после окончательного подтверждения стабильности реализации SMB2 в результате оценки работы реальных систем, перешедших на новый протокол в Samba;
* Добавлен новый анализатор трафика SMB Traffic Analyzer (SMBTA), поддерживающий вторую версию протокола VFS-модулей, в которой реализовано шифрование, передача нескольких аргументов и упрощенный для разбора формат. Для управления SMBTA используется утилита smbta-util. SMBTA позволяет осуществить мониторинг и сбор статистики о потоках данных пользователей, работе Samba-сервисов или целых доменов. В отличие от сетевых анализаторов, SMBTA не перехватывает трафик, а получает информацию через VFS-интерфейс (Virtual File System) Samba, являясь полностью прозрачным для пользователей и не влияя на эффективность пересылки;
* Полностью переписан и подвергнут рефакторингу код обработки очередей печати (Spoolss) и реализации RAP-команд управления печатью (Remote Administration Protocol). Все связанные с печатью операции теперь выполняются через RPC-интерфейс Spoolss, что позволило в одном месте сконцентрировать код всех связанных с подсистемой печати проверок, убрав все обработчики особых ситуаций из основного кода печати.
Для хранения любых данных в Spoolss и других компонентах системы печати задействованы RPC-интерфейсы winreg. Т.е. вместо TDB-файлов использован интерфейс Registry, что позволит обращаться к данным принтера и Windows-клиентам, используя стандартный для них и на 100% совместимый RPC-интерфейс winreg. Процесс миграции с TDB-файлов максимально автоматизирован и будет автоматически вызван при первом запуске (также можно провести миграцию вручную, используя команду "net printer migrate"). В будущем планируется вынос реализации спула печати в отдельный фоновый процесс, что позволит увеличить модульность системы и даст возможность не использовать лишний код, в ситуации кода поддержка печати не требуется;
* Продолжена работа по внутренней реструктуризации, нацеленная на увеличение разделения внутренних подсистем, что в конечном итоге должно привести к ускорению сборки, сокращению размера исполняемых файлов и оптимизации зависимостей;
* Добавлен бэкенд для работы с квотами на NFS-разделах в Linux. Разработка базируется на ранее созданной реализации для платформ Solaris и FreeBSD. Бэкенд позволяет samba передавать корректную информацию о наличии свободного места на импортируемых NFS-разделах, используемых для размещения samba-разделов;
* Внутренние изменения метода работы с локальной базой пользователей в Winbind. Вместо вызова функций passdb для получения информации о локальных пользователях и группах используются обращение через внутренние неименованные каналы (samr и lsa rpc pipe). Причина изменения связана с желанием использование единого подхода во всех компонентах инфраструктуры, что позволяет вынести больше кода Winbind в совместно используемые библиотеки;
* Изменение настроек по умолчанию, связанных с безопасностью:
client ntlmv2 auth = yes
client use spnego principal = no
send spnego principal = no
Опция 'client ntlmv2 auth = yes' запрещает использовать NTLM-аутентикацию при работе в режиме клиента (вместо устаревшего протокола NTLMv1 используется более криптостойкий протокол NTLMv2, базирующийся на хэшах HMAC-MD5). Изменение затрагивает только входящие в состав Samba утилиты, такие как smbclient и winbind, но не влияет на работу CIFS-клиента, встроенного в Linux-ядро.
Опция 'client use spnego principal = no' указывает на то, что для запроса билета в Kerberos клиентский софт samba (smbclient, winbind) будет использовать "CIFS/имя хоста", что близко к поведению Windows при работе с Kerberos, вместо ранее практикуемого полного доверия к предоставляемым сервером хинтам, поддержка которых была прекращена начиная с Windows 2008. Для налаживания работы со всеми клиентами, все псевдонимы (alias) сервера должны быть записаны как servicePrincipalName в Active Directory. Опция 'send spnego principal = no' введена для отражения изменений в Windows 2008, больше не отправляющем principal-хинты;
* Переработан способ маппинга пользовательских идентификаторов c целью увеличения гибкости определения правил и обеспечения более простого и понятного процесса конфигурирования. Основные изменения связаны с выносом кода, ответственного за сопоставление с unix-идентификаторами, в отдельные idmap-бэкенды tdb, tdb2 и ldap. Код выделения unix id теперь привязан к правилам сопоставления (sids_to_unixids). В каждом idmap-бэкенде используется свой механизм создания idmap unixid. Из winbindd API удалены методы, связанные с сохранением и удалением сопоставлений идентификаторов. Команда "net idmap dump/restore" теперь вместо работы с winbindd напрямую обращается к базам данных. В настоящий момент обеспечена поддержка бэкендов tdb и tdb2, пока отсутствует поддержка ldap. Признаны устаревшими параметры конфигурации "idmap uid", "idmap gid" и "idmap range", вместо них следует использовать "idmap config * : range" и "idmap config * : backend";
* Начальная реализация Endpoint Mapper для Samba, работающего как DNS-сервер, но для портов. Т.е. при необходимости подсоединения к определенному RPC-сервису через TCP/IP запрос к Endpoint Mapper позволяет узнать номер порта для соединения по имени сервиса. В настоящий момент код еще не до конца протестирован и не активирован по умолчанию. Для включения необходимо использовать настройку "rpc_server:epmapper = daemon" в smb.conf.
* Добавлены новые директивы конфигурации smb.conf (в скобках значение по умолчанию):
o "async smb echo handler" (No)
o "client use spnego principal" (No)
o "ctdb locktime warn threshold" (0)
o "log writeable files on exit" (No)
o "multicast dns register" (Yes)
o "ncalrpc dir"
o "send spnego principal" (No)
o "smb2 max credits" (128)
o "smb2 max read" (1048576)
o "smb2 max trans" (1048576)
o "smb2 max write" (1048576)
o "username map cache time" (0)
o "winbind max clients" (200)
* Прекращена поддержка директивы "idmap alloc backend".