systemd menedżer systemu wersja 249

Po trzech miesiącach prac zaprezentowano wydanie menedżera systemu systemd 249. Nowa wersja zapewnia możliwość definiowania użytkowników/grup w formacie JSON, stabilizuje protokół Journal, upraszcza organizację ładowania kolejnych partycji dysku, dodaje możliwość łączy programy BPF z usługami i implementuje mapowanie identyfikatorów użytkowników w zamontowanych partycjach, oferowana jest duża część nowych ustawień sieciowych i możliwości uruchamiania kontenerów.

Główne zmiany:

  • Protokół dziennika jest udokumentowany i może być używany na klientach zamiast protokołu syslog do lokalnego dostarczania zapisów dziennika. Protokół Journal jest wdrażany od dawna i jest już używany w niektórych bibliotekach klienckich, jednak jego oficjalne wsparcie zostało ogłoszone dopiero niedawno.
  • Userdb i nss-systemd zapewniają obsługę odczytu dodatkowych definicji użytkowników znajdujących się w katalogach /etc/userdb/, /run/userdb/, /run/host/userdb/ i /usr/lib/userdb/, określonych w formacie JSON. Należy zauważyć, że funkcja ta zapewni dodatkowy mechanizm tworzenia użytkowników w systemie, zapewniając mu pełną integrację z NSS i /etc/shadow. Obsługa JSON dla wpisów użytkowników/grup umożliwi także dołączenie różnych ustawień zarządzania zasobami i innych ustawień do użytkowników rozpoznawanych przez pam_systemd i systemd-logind.
  • nss-systemd zapewnia syntezę wpisów użytkowników/grup w /etc/shadow przy użyciu hashowanych haseł z systemd-homed.
  • Zaimplementowano mechanizm ułatwiający organizację aktualizacji przy wykorzystaniu zastępujących się partycji dyskowych (jedna partycja jest aktywna, druga zapasowa – aktualizacja jest kopiowana na partycję zapasową, po czym staje się aktywna). Jeśli w obrazie dysku znajdują się dwie partycje root lub /usr, a udev nie wykrył obecności parametru „root=” lub przetwarza obrazy dysków określone za pomocą opcji „--image” w plikach systemd-nspawn i systemd -dissect, partycję rozruchową można obliczyć, porównując etykiety GPT (zakładając, że etykieta GPT podaje numer wersji zawartości partycji, a systemd wybierze partycję z nowszymi zmianami).
  • Do plików usług dodano ustawienie BPFProgram, za pomocą którego można organizować ładowanie programów BPF do jądra i zarządzać nimi poprzez powiązanie z określonymi usługami systemowymi.
  • Systemd-fstab-generator i systemd-repart dodają możliwość rozruchu z dysków, które mają tylko partycję /usr i nie mają partycji root (partycja główna zostanie wygenerowana przez systemd-repart podczas pierwszego rozruchu).
  • W systemd-nspawn opcja „--private-user-chown” została zastąpiona bardziej ogólną opcją „--private-user-ownership”, która może akceptować wartości „chown” jako odpowiednik „-- private-user-chown”, „off”, aby wyłączyć stare ustawienia, „map” aby mapować identyfikatory użytkowników na zamontowanych systemach plików i „auto”, aby wybrać „map”, jeśli wymagana funkcjonalność jest dostępna w jądrze (5.12+) lub wrócić do rekurencyjnego wywołania „chown” w inny sposób. Korzystając z mapowania, możesz zmapować pliki jednego użytkownika na zamontowanej partycji obcej na innego użytkownika w bieżącym systemie, co ułatwia współdzielenie plików pomiędzy różnymi użytkownikami. W mechanizmie przenośnych katalogów domowych o nazwie systemd-homed mapowanie umożliwi użytkownikom przenoszenie ich katalogów domowych na nośniki zewnętrzne i używanie ich na różnych komputerach, które nie mają tego samego układu identyfikatora użytkownika.
  • W systemd-nspawn opcja „--private-user” może teraz używać wartości „identity” do bezpośredniego odzwierciedlania identyfikatorów użytkowników podczas konfigurowania przestrzeni nazw użytkowników, tj. UID 0 i UID 1 w kontenerze zostaną odzwierciedlone w UID 0 i UID 1 po stronie hosta, aby zredukować wektory ataku (kontener otrzyma jedynie możliwości procesowe w swojej przestrzeni nazw).
  • Do systemd-nspawn dodano opcję „--bind-user”, aby przekazać konto użytkownika istniejące w środowisku hosta do kontenera (katalog domowy jest montowany w kontenerze, dodawany jest wpis użytkownika/grupy i mapowanie UID odbywa się pomiędzy kontenerem a środowiskiem hosta).
  • systemd-ask-password i systemd-sysusers dodały obsługę żądania ustawienia haseł (passwd.hashed-password. i passwd.plaintext-password.) przy użyciu mechanizmu wprowadzonego w systemd 247 w celu bezpiecznego przesyłania wrażliwych danych za pomocą pliki pośrednie w oddzielnym katalogu. Domyślnie poświadczenia są akceptowane z procesu z PID1, który otrzymuje je np. od menedżera zarządzania kontenerami, co pozwala na skonfigurowanie hasła użytkownika przy pierwszym uruchomieniu.
  • systemd-firstboot dodaje obsługę mechanizmu bezpiecznego przesyłania wrażliwych danych w celu odpytywania różnych parametrów systemowych, którego można użyć do inicjowania ustawień systemowych przy pierwszym uruchomieniu obrazu kontenera, który nie ma niezbędnych ustawień w katalogu /etc.
  • Proces PID 1 gwarantuje, że podczas rozruchu zostanie wyświetlona zarówno nazwa urządzenia, jak i opis. Możesz zmienić dane wyjściowe za pomocą parametru „StatusUnitFormat=combined” w pliku system.conf lub opcji wiersza poleceń jądra „systemd.status-unit-format=combined”
  • Do narzędzi systemd-machine-id-setup i systemd-repart dodano opcję „--image”, umożliwiającą przesłanie pliku z identyfikatorem komputera do obrazu dysku lub zwiększenie rozmiaru obrazu dysku.
  • Do pliku konfiguracyjnego partycji używanego przez narzędzie systemd-repart dodano parametr MakeDirectories, którego można użyć do utworzenia dowolnych katalogów w utworzonym systemie plików przed odzwierciedleniem ich w tablicy partycji (na przykład w celu utworzenia katalogów dla punktów montowania w partycję główną, aby można było od razu zamontować partycję w trybie tylko do odczytu). Aby kontrolować flagi GPT w utworzonych sekcjach, dodano odpowiednie parametry Flags, ReadOnly i NoAuto. Parametr CopyBlocks ma wartość „auto”, aby automatycznie wybrać bieżącą partycję rozruchową jako źródło podczas kopiowania bloków (na przykład, gdy trzeba przenieść własną partycję główną na nowy nośnik).
  • GPT implementuje flagę „grow-file-system”, która jest podobna do opcji montowania x-systemd.growfs i zapewnia automatyczne rozszerzanie rozmiaru FS do granic urządzenia blokowego, jeśli rozmiar FS jest mniejszy niż partycja. Flaga ma zastosowanie do systemów plików Ext3, XFS i Btrfs i może być zastosowana do automatycznie wykrytych partycji. Flaga jest domyślnie włączona dla zapisywalnych partycji tworzonych automatycznie za pomocą systemd-repart. Dodano opcję GrowFileSystem w celu skonfigurowania flagi w systemd-repart.
  • Plik /etc/os-release zapewnia obsługę nowych zmiennych IMAGE_VERSION i IMAGE_ID w celu określenia wersji i identyfikatora obrazów aktualizowanych atomowo. Zaproponowano specyfikatory %M i %A w celu zastąpienia określonych wartości różnymi poleceniami.
  • Do narzędzia przenośnyctl dodano parametr „--extension”, umożliwiający aktywację obrazów rozszerzeń systemu przenośnego (na przykład za ich pośrednictwem można rozpowszechniać obrazy z dodatkowymi usługami zintegrowanymi z partycją główną).
  • Narzędzie systemd-coredump umożliwia ekstrakcję informacji o identyfikatorze kompilacji ELF podczas generowania zrzutu rdzenia procesu, co może być przydatne do określenia pakietu, do którego należy uszkodzony proces, jeśli zbudowano informacje o nazwie i wersji pakietów deb lub RPM do plików ELF.
  • Do udev dodano nową bazę sprzętową dla urządzeń FireWire (IEEE 1394).
  • W udev dodano trzy zmiany do schematu wyboru nazwy interfejsu sieciowego „net_id”, które naruszają kompatybilność wsteczną: nieprawidłowe znaki w nazwach interfejsów są teraz zastępowane przez „_”; Nazwy gniazd PCI typu hotplug w systemach s390 są przetwarzane w postaci szesnastkowej; Dozwolone jest użycie maksymalnie 65535 wbudowanych urządzeń PCI (poprzednio numery powyżej 16383 były blokowane).
  • systemd-resolved dodaje domenę „home.arpa” do listy NTA (Negative Trust Anchors), która jest zalecana dla lokalnych sieci domowych, ale nie jest używana w DNSSEC.
  • Parametr CPUAffinity zapewnia analizę specyfikatorów „%”.
  • Do plików .network dodano parametr ManageForeignRoutingPolicyRules, którego można użyć do wykluczenia systemd-networkd z przetwarzania zasad routingu innych firm.
  • Do plików „.network” dodano parametr RequiredFamilyForOnline umożliwiający określenie obecności adresu IPv4 lub IPv6 jako znaku, że interfejs sieciowy jest w stanie „online”. Networkctl zapewnia wyświetlanie statusu „online” dla każdego łącza.
  • Dodano parametr OutgoingInterface do plików .network w celu zdefiniowania interfejsów wychodzących podczas konfigurowania mostów sieciowych.
  • Do plików „.network” dodano parametr Group, umożliwiający skonfigurowanie grupy wielościeżkowej dla wpisów w sekcji „[NextHop]”.
  • Dodano opcje „-4” i „-6” do systemd-network-wait-online, aby ograniczyć oczekiwanie na połączenie tylko do IPv4 lub IPv6.
  • Do ustawień serwera DHCP dodano parametr RelayTarget, który przełącza serwer w tryb DHCP Ralay. W celu dodatkowej konfiguracji przekaźnika DHCP oferowane są opcje RelayAgentCircuitId i RelayAgentRemoteId.
  • Do serwera DHCP dodano parametr ServerAddress, umożliwiający jawne ustawienie adresu IP serwera (w przeciwnym razie adres zostanie wybrany automatycznie).
  • Serwer DHCP implementuje sekcję [DHCPServerStaticLease], która pozwala skonfigurować powiązania adresów statycznych (dzierżawy DHCP), określając stałe powiązania IP z adresami MAC i odwrotnie.
  • Ustawienie RestrictAddressFamilies obsługuje wartość „none”, co oznacza, że ​​usługa nie będzie miała dostępu do gniazd żadnej rodziny adresów.
  • W plikach „.network” w sekcjach [Address], [DHCPv6PrefixDelegation] i [IPv6Prefix] zaimplementowana jest obsługa ustawienia RouteMetric, które pozwala określić metrykę dla prefiksu trasy utworzonego dla określonego adresu.
  • nss-myhostname i systemd-resolved umożliwiają syntezę rekordów DNS z adresami dla hostów o specjalnej nazwie „_outbound”, dla których zawsze nadawany jest lokalny adres IP, wybrany zgodnie z domyślnymi trasami używanymi dla połączeń wychodzących.
  • W plikach .network w sekcji „[DHCPv4]” dodano domyślne aktywne ustawienie RoutesToNTP, które wymaga dodania osobnej trasy przez bieżący interfejs sieciowy, aby uzyskać dostęp do adresu serwera NTP uzyskanego dla tego interfejsu za pomocą protokołu DHCP (podobnie jak DNS ustawienie pozwala zagwarantować, że ruch do serwera NTP będzie kierowany przez interfejs, przez który otrzymano ten adres).
  • Dodano ustawienia SocketBindAllow i SocketBindDeny w celu kontrolowania dostępu do gniazd powiązanych z bieżącą usługą.
  • W przypadku plików jednostkowych zaimplementowano ustawienie warunkowe o nazwie ConditionFirmware, które umożliwia tworzenie kontroli oceniających funkcje oprogramowania sprzętowego, takie jak działanie w systemach UEFI i Device.tree, a także sprawdzanie zgodności z określonymi możliwościami drzewa urządzeń.
  • Zaimplementowano opcję ConditionOSRelease do sprawdzania pól w pliku /etc/os-release. Przy definiowaniu warunków sprawdzania wartości pól dopuszczalne są operatory „=”, „!=”, „=”, „>”.
  • W narzędziu hostnamectl polecenia takie jak „get-xyz” i „set-xyz” są wolne od przedrostków „get” i „set”, na przykład zamiast „hostnamectl get-hostname” i „hostnamectl „set-hostname” możesz użyć polecenia „hostnamectl nazwa hosta” ”, przypisanie wartości, w której określa się podanie dodatkowego argumentu („hostnamectl nazwa hosta wartość”). Zachowano obsługę starszych poleceń, aby zapewnić kompatybilność.
  • Narzędzie systemd-detect-virt i ustawienie ConditionVirtualization zapewniają poprawną identyfikację środowisk Amazon EC2.
  • Ustawienie LogLevelMax w plikach jednostkowych ma teraz zastosowanie nie tylko do komunikatów dziennika generowanych przez usługę, ale także do komunikatów procesu PID 1, które wspominają o usłudze.
  • Zapewniono możliwość dołączania danych SBAT (UEFI Secure Boot Advanced Targeting) do plików systemd-boot EFI PE.
  • /etc/crypttab implementuje nowe opcje „headless” i „password-echo” - pierwsza pozwala pominąć wszystkie operacje związane z interaktywnym monitowaniem użytkownika o hasła i PIN-y, a druga pozwala skonfigurować sposób wyświetlania wprowadzonego hasła (nic nie pokazuj, pokazuj znak po znaku i wyświetlaj gwiazdki). W systemd-ask-password dodano opcję „--echo” w podobnych celach.
  • systemd-cryptenroll, systemd-cryptsetup i systemd-homed rozszerzyły obsługę odblokowywania zaszyfrowanych partycji LUKS2 przy użyciu tokenów FIDO2. Dodano nowe opcje „--fido2-z-obecnością-użytkownika”, „--fido2-z-weryfikacją-użytkownika” i „-fido2-z-pinem-klienta”, aby kontrolować weryfikację fizycznej obecności użytkownika, weryfikację i konieczność wejścia kod PIN.
  • Dodano opcje „--user”, „--system”, „--merge” i „--file” do systemd-journal-gatewayd, podobne do opcji journalctl.
  • Oprócz bezpośrednich zależności pomiędzy jednostkami określonymi poprzez parametry OnFailure i Slice, dodano obsługę ukrytych zależności odwrotnych OnFailureOf i SliceOf, co może być przydatne np. do określenia wszystkich jednostek zawartych w plasterku.
  • Dodano nowe typy zależności pomiędzy jednostkami: OnSuccess i OnSuccessOf (przeciwieństwo OnFailure, wywoływane po pomyślnym zakończeniu); PropagatesStopTo i StopPropagatedFrom (umożliwiają propagację zdarzenia zatrzymania jednostki do innej jednostki); Podtrzymuje i UpheldBy (alternatywa dla ponownego uruchomienia).
  • Narzędzie systemd-ask-password ma teraz opcję „--emoji” umożliwiającą kontrolowanie wyglądu symbolu kłódki (🔐) w wierszu wprowadzania hasła.
  • Dodano dokumentację dotyczącą struktury drzewa źródeł systemowych.
  • Dla jednostek dodano właściwość MemoryAvailable, pokazującą ile pamięci pozostało jednostce przed osiągnięciem limitu ustawionego za pomocą parametrów MemoryMax, MemoryHigh lub MemoryAvailable.

Źródło: opennet.ru

Dodaj komentarz