systemd menedżer systemu wersja 243

Po pięciu miesiącach rozwoju przedstawione wydanie menedżera systemu systemd 243. Wśród innowacji możemy zauważyć integrację z PID 1 modułu obsługi małej ilości pamięci w systemie, obsługę dołączania własnych programów BPF do filtrowania ruchu jednostkowego, wiele nowych opcji dla systemd-networkd, tryb monitorowania przepustowości sieci interfejsy, włączenie domyślnie w systemach 64-bitowych 22-bitowych numerów PID zamiast 16-bitowych, przejście do ujednoliconej hierarchii grup cgroup, włączenie do generatora sieci systemowej.

Główne zmiany:

  • Do procedury obsługi PID 1 dodano rozpoznawanie sygnałów generowanych przez jądro o braku pamięci (Out-Of-Memory, OOM) w celu przeniesienia jednostek, które osiągnęły limit zużycia pamięci, do specjalnego stanu z opcjonalną możliwością wymuszenia ich zakończenia lub zatrzymaj się;
  • W przypadku plików jednostkowych nowe parametry IPIngressFilterPath i
    IPEgressFilterPath, który umożliwia łączenie programów BPF z dowolnymi procedurami obsługi w celu filtrowania przychodzących i wychodzących pakietów IP generowanych przez procesy powiązane z tym urządzeniem. Proponowane funkcje pozwalają na stworzenie swego rodzaju zapory ogniowej dla usług systemowych. Przykład pisania prosty filtr sieciowy oparty na BPF;

  • Do narzędzia systemctl dodano polecenie „clean” umożliwiające usunięcie pamięci podręcznej, plików wykonawczych, informacji o statusie i katalogów dzienników;
  • systemd-networkd dodaje obsługę interfejsów sieciowych MACsec, nlmon, IPVTAP i Xfrm;
  • systemd-networkd implementuje oddzielną konfigurację stosów DHCPv4 i DHCPv6 za pomocą sekcji „[DHCPv4]” i „[DHCPv6]” w pliku konfiguracyjnym. Dodano opcję RoutesToDNS umożliwiającą dodanie osobnej trasy do serwera DNS określonej w parametrach otrzymanych z serwera DHCP (dzięki czemu ruch do DNS jest przesyłany tym samym łączem, co główna trasa otrzymywana z DHCP). Dodano nowe opcje dla DHCPv4: MaxAttempts - maksymalna liczba żądań uzyskania adresu, BlackList - czarna lista serwerów DHCP, SendRelease - umożliwia wysyłanie wiadomości DHCP RELEASE po zakończeniu sesji;
  • Do narzędzia systemd-analyze dodano nowe polecenia:
    • „systemd-analyze timestamp” - analiza i konwersja czasu;
    • „systemd-analyze timespan” - analiza i konwersja okresów;
    • „systemd-analyze Condition” - parsowanie i testowanie wyrażeń ConditionXYZ;
    • „systemd-analyze exit-status” - analizowanie i konwertowanie kodów wyjścia z liczb na nazwy i odwrotnie;
    • „systemd-analyze unit-files” – wyświetla listę wszystkich ścieżek plików dla jednostek i aliasów jednostek.
  • Opcje SuccessExitStatus, RestartPreventExitStatus i
    RestartForceExitStatus obsługuje teraz nie tylko numeryczne kody powrotu, ale także ich identyfikatory tekstowe (na przykład „DATAERR”). Listę kodów przypisanych do identyfikatorów możesz przeglądać za pomocą komendy „sytemd-analyze exit-status”;

  • Do narzędzia networkctl dodano polecenie „delete” służące do usuwania wirtualnych urządzeń sieciowych, a także opcję „—stats” wyświetlającą statystyki urządzeń;
  • Do pliku networkd.conf dodano ustawienia SpeedMeter i SpeedMeterIntervalSec w celu okresowego pomiaru przepustowości interfejsów sieciowych. Statystyki uzyskane z wyników pomiarów można wyświetlić w wynikach polecenia „networkctl status”;
  • Dodano nowe narzędzie systemd-network-generator do generowania plików
    .network, .netdev i .link oparte na ustawieniach IP przekazywanych podczas uruchamiania za pomocą wiersza poleceń jądra Linuksa w formacie ustawień Dracut;

  • Wartość sysctl „kernel.pid_max” w systemach 64-bitowych jest teraz domyślnie ustawiona na 4194304 (22-bitowe PID zamiast 16-bitowe), co zmniejsza prawdopodobieństwo kolizji podczas przypisywania PID, zwiększa limit liczby jednocześnie uruchomionych procesów i pozytywnie wpływa na bezpieczeństwo. Zmiana może potencjalnie prowadzić do problemów ze zgodnością, ale takie problemy nie zostały jeszcze zgłoszone w praktyce;
  • Domyślnie etap kompilacji przełącza się na ujednoliconą hierarchię cgroups-v2 („-Ddefault-hierarchy=unified”). Poprzednio domyślnym był tryb hybrydowy („-Ddefault-hierarchy=hybrid”);
  • Zmieniono zachowanie filtru wywołań systemowych (SystemCallFilter), który w przypadku zabronionego wywołania systemowego kończy teraz cały proces, a nie pojedyncze wątki, gdyż zakończenie poszczególnych wątków mogłoby prowadzić do nieprzewidywalnych problemów. Zmiany mają zastosowanie tylko wtedy, gdy masz jądro Linuksa 4.14+ i libseccomp 2.4.0+;
  • Programy nieuprzywilejowane otrzymują możliwość wysyłania pakietów ICMP Echo (ping) poprzez ustawienie sysctl „net.ipv4.ping_group_range” dla całego zakresu grup (dla wszystkich procesów);
  • Aby przyspieszyć proces kompilacji, generowanie podręczników man zostało domyślnie zatrzymane (aby zbudować pełną dokumentację, należy skorzystać z opcji „-Dman=true” lub „-Dhtml=true” dla podręczników w formacie html). Aby ułatwić przeglądanie dokumentacji, dołączono dwa skrypty: build/man/man i build/man/html do generowania i przeglądania interesujących podręczników;
  • Do przetwarzania nazw domen zawierających znaki z alfabetów narodowych domyślnie wykorzystywana jest biblioteka libidn2 (aby zwrócić libidn należy skorzystać z opcji „-Dlibidn=true”);
  • Zakończono obsługę pliku wykonywalnego /usr/sbin/halt.local, który zapewniał funkcjonalność, która nie była szeroko rozpowszechniona w dystrybucjach. Aby zorganizować uruchamianie poleceń podczas zamykania, zaleca się użycie skryptów w /usr/lib/systemd/system-shutdown/ lub zdefiniowanie nowej jednostki zależnej od final.target;
  • Na ostatnim etapie zamykania systemd automatycznie zwiększa poziom dziennika w sysctl „kernel.printk”, co rozwiązuje problem z wyświetlaniem w dzienniku zdarzeń, które miały miejsce w późniejszych etapach zamykania, gdy zwykłe demony rejestrujące już zakończyły pracę ;
  • W Journalctl i innych narzędziach wyświetlających logi ostrzeżenia są podświetlane na żółto, a zapisy audytu są podświetlane na niebiesko, aby wizualnie wyróżnić je z tłumu;
  • W zmiennej środowiskowej $PATH ścieżka do bin/ znajduje się teraz przed ścieżką do sbin/, tj. jeżeli w obu katalogach znajdują się identyczne nazwy plików wykonywalnych, zostanie wykonany plik z bin/;
  • systemd-logind udostępnia wywołanie SetBrightness() w celu bezpiecznej zmiany jasności ekranu dla poszczególnych sesji;
  • Do polecenia „udevadm info” dodano flagę „--wait-for-initialization”, aby poczekać na inicjalizację urządzenia;
  • Podczas uruchamiania systemu moduł obsługi PID 1 wyświetla teraz nazwy jednostek zamiast linii z ich opisem. Aby powrócić do poprzedniego zachowania, możesz użyć opcji StatusUnitFormat w pliku /etc/systemd/system.conf lub opcji jądra systemd.status_unit_format;
  • Dodano opcję KExecWatchdogSec do pliku /etc/systemd/system.conf dla watchdoga PID 1, który określa limit czasu ponownego uruchomienia przy użyciu kexec. Stare ustawienie
    Nazwę ShutdownWatchdogSec zmieniono na RebootWatchdogSec i definiuje limit czasu dla zadań podczas zamykania lub normalnego restartu;

  • Dodano nową opcję dla usług Warunek wykonania, co pozwala określić polecenia, które zostaną wykonane przed ExecStartPre. Na podstawie zwróconego przez komendę kodu błędu podejmowana jest decyzja o dalszej realizacji jednostki - jeżeli zostanie zwrócony kod 0, uruchomienie jednostki będzie kontynuowane, jeśli od 1 do 254 zakończy się po cichu bez flagi awarii, jeśli 255 zakończy się flaga awarii;
  • Dodano nową usługę systemd-pstore.service do wyodrębniania danych z sys/fs/pstore/ i zapisywania do /var/lib/pstore w celu dalszej analizy;
  • Do narzędzia timedatectl dodano nowe polecenia służące do konfigurowania parametrów NTP dla systemd-timesyncd w odniesieniu do interfejsów sieciowych;
  • Polecenie „localectl list-locales” nie wyświetla już ustawień narodowych innych niż UTF-8;
  • Zapewnia ignorowanie błędów przypisania zmiennych w plikach sysctl.d/, jeśli nazwa zmiennej zaczyna się od znaku „-”;
  • Platforma systemd-random-seed.service jest teraz całkowicie odpowiedzialny za inicjalizację puli entropii generatora liczb pseudolosowych jądra Linuksa. Usługi wymagające poprawnie zainicjowanego /dev/urandom należy uruchomić po systemd-random-seed.service;
  • Program ładujący systemd-boot zapewnia opcjonalną możliwość obsługi plik nasion z losową sekwencją w partycji systemowej EFI (ESP);
  • Do narzędzia bootctl dodano nowe polecenia: „bootctl random-seed” w celu wygenerowania pliku początkowego w ESP oraz „bootctl is-installed” w celu sprawdzenia instalacji modułu ładującego systemd-boot. bootctl został także dostosowany tak, aby wyświetlał ostrzeżenia o nieprawidłowej konfiguracji wpisów startowych (np. gdy obraz jądra został usunięty, ale pozostawiono wpis do jego załadowania);
  • Zapewnia automatyczny wybór partycji wymiany, gdy system przechodzi w tryb uśpienia. Partycja jest wybierana w zależności od skonfigurowanego dla niej priorytetu oraz w przypadku identycznych priorytetów ilości wolnego miejsca;
  • Dodano opcję keyfile-timeout do /etc/crypttab, aby ustawić, jak długo urządzenie z kluczem szyfrującym będzie czekać, zanim poprosi o hasło dostępu do zaszyfrowanej partycji;
  • Dodano opcję IOWeight umożliwiającą ustawienie wagi wejść/wyjść dla harmonogramu BFQ;
  • systemd-resolved dodaje „ścisły” tryb działania dla DNS-over-TLS i implementuje możliwość buforowania tylko pozytywnych odpowiedzi DNS („Cache no-negative” w pliku require.conf);
  • W przypadku VXLAN systemd-networkd dodał opcję GenericProtocolExtension, aby włączyć rozszerzenia protokołu VXLAN. Dla VXLAN i GENEVE dodano opcję IPDoNotFragment w celu ustawienia flagi zakazu fragmentacji dla pakietów wychodzących;
  • W systemd-networkd w sekcji „[Route]” pojawiła się opcja FastOpenNoCookie umożliwiająca włączenie mechanizmu szybkiego otwierania połączeń TCP (TFO - TCP Fast Open, RFC 7413) w odniesieniu do poszczególnych tras, a także opcję TTLPropagate aby skonfigurować TTL LSP (ścieżka przełączana etykietą). Opcja „Typ” zapewnia obsługę trybów routingu lokalnego, rozgłoszeniowego, anycast, multicast, any i xresolve;
  • Systemd-networkd oferuje opcję DefaultRouteOnDevice w sekcji „[Sieć]”, aby automatycznie skonfigurować trasę domyślną dla danego urządzenia sieciowego;
  • Systemd-networkd dodał ProxyARP i
    ProxyARPWifi do ustawiania zachowania proxy ARP, MulticastRouter do ustawiania parametrów routingu w trybie multiemisji, MulticastIGMPVersion do zmiany wersji IGMP (Internet Group Management Protocol) dla multiemisji;

  • Systemd-networkd dodał opcje Local, Peer i PeerPort dla tuneli FooOverUDP w celu skonfigurowania lokalnych i zdalnych adresów IP, a także numeru portu sieciowego. W przypadku tuneli TUN dodano opcję VnetHeader w celu skonfigurowania obsługi GSO (Generic Segment Offload);
  • W systemd-networkd, w plikach .network i .link w sekcji [Match] pojawiła się opcja Property, która pozwala na identyfikację urządzeń po ich specyficznych właściwościach w udev;
  • W systemd-networkd dodano opcję AssignToLoopback dla tuneli, która kontroluje, czy koniec tunelu jest przypisany do urządzenia pętli zwrotnej „lo”;
  • systemd-networkd automatycznie aktywuje stos IPv6, jeśli jest blokowany przez sysctl Disable_ipv6 - IPv6 jest aktywowany, jeśli dla interfejsu sieciowego zdefiniowano ustawienia IPv6 (statyczne lub DHCPv6), w przeciwnym razie już ustawiona wartość sysctl nie ulegnie zmianie;
  • W plikach .network ustawienie CriticalConnection zostało zastąpione opcją KeepConfiguration, która zapewnia więcej możliwości definiowania sytuacji („tak”, „statyczny”, „dhcp-on-stop”, „dhcp”), w których systemd-networkd powinien nie dotykaj istniejących połączeń podczas uruchamiania;
  • Naprawiono lukę CVE-2019-15718, spowodowane brakiem kontroli dostępu do interfejsu D-Bus z rozwiązaniem systemowym. Problem umożliwia nieuprzywilejowanemu użytkownikowi wykonywanie operacji dostępnych tylko dla administratorów, takich jak zmiana ustawień DNS i kierowanie zapytań DNS do fałszywego serwera;
  • Naprawiono lukę CVE-2019-9619związane z brakiem włączania pam_systemd dla sesji nieinteraktywnych, co pozwala na fałszowanie aktywnej sesji.

Źródło: opennet.ru

Dodaj komentarz