Po 6 miesiącach rozwoju ukazała się wersja Samba 4.25.0, kontynuująca rozwój gałęzi Samba 4 z pełną realizacją kontrolera domeny i usługi Active Directory, kompatybilnej z implementacją Windows Server i obsługującej wszystkie wspierane przez Microsoft wersje klientów Windows, w tym Windows 11. Samba 4 jest wielofunkcyjnym produktem serwerowym, dostarczającym również realizację serwera plików, usługi druku i serwera identyfikacji (winbind). Kod projektu napisany jest w języku C i rozpowszechniany na licencji GPLv3.
Kluczowe zmiany w Samba 4.25:
- Do realizacji protokołu SMB3 dodano eksperymentalną obsługę trwałych uchwytów plików (SMB2_CAP_PERSISTENT_HANDLES), pozwalającą klientom kontynuować pracę z otwartymi plikami po przerwaniu połączenia sieciowego, restartowaniu serwery lub przełączeniu obciążenia na zapasowy serwer. Trwałe uchwyty pozwalają uniknąć ponownego otwierania plików po awarii serwera, co jest szczególnie istotne w przypadku hostowania na plikach serwerze maszyn wirtualnych Samba i klastrowych baz danych.
Aby to działało, wymagany jest ekskluzywny dostęp do pamięci SMB oraz wyłączenie ustawień „kernel oplocks”, „kernel share modes” i „posix locking”, co narusza kompatybilność z POSIX i NFS, a także znacznie obniża wydajność z powodu synchronizacji zapisu metadanych na dysku przy każdej operacji. Zaproponowano dwa tryby zapewniania odporności na błędy: full_outage (domyślnie) — tworzy lokalną kopię zapasową stanu, pozwalającą zachować uchwyty nawet po całkowitej awarii klastra, ale zwiększającą obciążenie; partial_outage — szybsza praca bez kopii zapasowej, ale uchwyty są tracone, jeśli wszystkie węzły klastra jednocześnie zawiodą.
- Dodano moduł VFS vfs_aio_ratelimit, umożliwiający ustawienie limitu intensywności zapytań (rate limit), działającego w kontekście całego klastra, a nie tylko w odniesieniu do poszczególnych węzłów. Aby skoordynować globalne zastosowanie limitów na każdym węźle, musi być uruchomiony proces w tle ratelimitd, agregujący aktywność wszystkich procesów smbd na węźle i przekazujący informacje do innych węzłów klastra. Włączenie vfs_aio_ratelimit odbywa się na etapie kompilacji za pomocą opcji „—with-ratelimitd”.
- Dodano moduł VFS vfs_ceph_rgw dla Ceph RGW (Object Gateway), umożliwiający eksportowanie danych z Ceph Object Gateway jako pamięci SMB z hierarchiczną reprezentacją przechowywanych obiektów w formie zwykłych plików i katalogów z podziałem dostępu na poziomie POSIX uid/gid.
- Zrealizowane poziomy funkcjonalności klastra, przypominające poziomy domeny i lasy w Active Directory, umożliwiające etapowe aktualizowanie węzłów w klastrze (rolling upgrade). Format bazy danych oraz wewnętrzne formaty wymiany wiadomości, wpływające na interakcję węzłów, zmieniają się jedynie po wyraźnym podniesieniu poziomu dla całego klastra, co zapewnia kompatybilność węzłów z różnymi wersjami Samba podczas aktualizacji. Zarządzanie odbywa się poprzez polecenia „net clusterlevel features|show|showall|upgrade”.
- Dla szyfrowania w domenie domyślnie wykorzystywane są algorytmy aes128-cts-hmac-sha1-96 i aes256-cts-hmac-sha1-96 dla domen z poziomem funkcjonalności 2008 i wyżej. Zmiana blokuje manifestację podatności CVE-2026-20833, spowodowanej wykorzystaniem niesolidnych metod szyfrowania w Windows Kerberos.
- W CTDB pliki z blokadami, PID i gniazdami przeniesiono do podkatalogów ctdb/. Skrypt inicjalizacji ctdb.init przeniesiono do ctdb/doc/examples. Dodano wsparcie dla monitorowania hostów, takich jak serwery DNS. Funkcja detect_init_style() i zmienna CTDB_INIT_STYLE zostały uznane za przestarzałe (zamiast nich zaleca się używać CTDB_PLATFORM_STYLE).
Źródło: opennet.ru
