След пет месеца разработка релиз на системен мениджър . Сред новостите е интеграцията в PID 1 на обработчик за недостиг на памет в системата, поддръжка на прикачване на собствени BPF програми за филтриране на трафика на единиците, множество нови опции за systemd-networkd, режим на мониторинг на пропускната способност на мрежовите интерфейси, използване по подразбиране на 64-битови системи с 22-битови PID номера вместо 16-битови, преминаване към унифицирана йерархия на cgroups и включване в systemd-network-generator.
Основни промени:
- В обработчика PID 1 е добавено разпознаване на сигнали за недостиг на памет, генерирани от ядрото (Out-Of-Memory, OOM), за прехвърляне на единици, достигнали лимита на потребление на памет, в специално състояние с опционалната възможност за тяхното принудително завършване или спиране;
- За файловете на единиците са реализирани нови параметри IPIngressFilterPath и
IPEgressFilterPath, позволяващи свързване на BPF програми с произволни обработващи схеми за филтриране на входящи и изходящи IP пакети, генерирани от процесите, свързани с тази единица. Предложените възможности позволяват създаването на своеобразни междусетеви стени за услугите на systemd. прост филтър за мрежата, базиран на BPF; - В утилитата systemctl е добавена команда „clean“ за изтриване на кеша, runtime файловете, информация за състоянието и директориите с логове;
- В systemd-networkd е добавена поддръжка на мрежови интерфейси MACsec, nlmon, IPVTAP и Xfrm;
- В systemd-networkd е реализирана отделна настройка на стековете DHCPv4 и DHCPv6 чрез секции „[DHCPv4]“ и „[DHCPv6]“ в конфигурационния файл. Добавена е опция RoutesToDNS за добавяне на отделен маршрут към DNS сървъра, указан в параметрите, получени от DHCP сървъра (за да се изпраща трафикът към DNS през същата връзка като основния маршрут, получен от DHCP). За DHCPv4 са добавени нови опции: MaxAttempts — максимален брой запитвания за получаване на адрес, BlackList — черен списък на DHCP сървъри, SendRelease — включване на изпращане на съобщения DHCP RELEASE при завършване на сесия;
- В утилитата systemd-analyze са добавени нови команди:
- „systemd-analyze timestamp“ — разбиране и преобразуване на времето;
- „systemd-analyze timespan“ — разбиране и преобразуване на интервали от време;
- „systemd-analyze condition“ — разбиране и тестване на изрази ConditionXYZ;
- „systemd-analyze exit-status“ — разбиране и преобразуване на кодовете за завършване от номера в имена и обратно;
- Команда «systemd-analyze unit-files» выводи списък на всички файлови пътища за юнити и псевдоними на юнити.
- Опциите SuccessExitStatus, RestartPreventExitStatus и
RestartForceExitStatus сега поддържат не само числени кодове за приключване, но и техните текстови идентификатори (например «DATAERR»). Списъкът на свързаните кодове с идентификаторите може да бъде видян чрез командата «systemd-analyze exit-status»; - В утилитата networkctl е добавена команда «delete» за изтриване на виртуални мрежови устройства, както и опция «—stats» за извеждане на статистика за устройствата;
- В networkd.conf са добавени настройки SpeedMeter и SpeedMeterIntervalSec за периодично измерване на пропускната способност на мрежовите интерфейси. Статистиката, получена от измерванията, може да бъде видяна в изхода на командата ‘networkctl status’;
- Добавена е нова утилита systemd-network-generator за генериране на файлове
.network, .netdev и .link на основата на IP настройки, предадени при стартиране чрез командния ред на ядрото на Linux в формат на настройки Dracut; - Стойността на sysctl «kernel.pid_max» на 64-битови системи вече по подразбиране е настроена на 4194304 (22-битови PID вместо 16-битови), което намалява вероятността за колизии при назначаване на PID, увеличава лимита на броя на едновременно стартирани процеси и положително влияе на безопасността. Потенциално промените могат да доведат до проблеми със съвместимостта, но на практика не са докладвани подобни проблеми;
- По подразбиране в етапа на изграждане е извършен преход към унифицирана йерархия cgroups-v2 («-Ddefault-hierarchy=unified»). Преди това по подразбиране се настройваше хибриден режим («-Ddefault-hierarchy=hybrid»);
- Променено е поведението на филтъра за системни повиквания (SystemCallFilter), който при опит за достъп до забранено системно повикване сега приключва целия процес, а не отделни нишки (thread), тъй като приключването на отделни нишки може да доведе до непредвидими проблеми. Промените действат само при наличие на ядро Linux 4.14+ и libseccomp 2.4.0+;
- На непривилегированите програми е предоставена възможност за изпращане на пакети ICMP Echo (ping) благодарение на настройката на sysctl «net.ipv4.ping_group_range» за целия диапазон от групи (за всички процеси);
- По подразбиране, за да се ускори процесът на компилация, генерирането на man-руководства е спряно (за компилиране на пълната документация трябва да се използва опцията «-Dman=true» или «-Dhtml=true» за ръководства във формат html). За улесняване на прегледа на документацията в комплекта са включени два скрипта build/man/man и build/man/html за генериране и преглед на интересуващите ръководства;
- По подразбиране, за обработка на домейни с символи на национални азбуки, е задействана библиотеката libidn2 (за връщане на libidn, трябва да се използва опцията «-Dlibidn=true»);
- Поддръжката на изпълнимия файл /usr/sbin/halt.local, който предоставя функционалност, която не се е разпространила достатъчно в дистрибуциите, е прекратена. За организиране на стартиране на команди при приключване на работа се препоръчва да се използват скриптове в /usr/lib/systemd/system-shutdown/ или да се определи нов unit, зависим от final.target;
- На последния етап от приключването на работата systemd сега автоматично увеличава нивото на логовете в sysctl «kernel.printk», което решава проблема с показването в логовете на събитията, които са се случили на късните етапи на завършване, когато стандартните демони за водене на логове вече са приключили;
- В journalctl и други утилити за показване на логове е осигурено подсвиркване на предупреждения в жълто, а записи на одита в синьо, за да се визуализират по-ясно;
- В променливата на средата $PATH пътят към bin/ сега трябва да бъде преди пътя към sbin/, т.е. при наличие на еднакви имена на изпълними файлове в двете директории, ще бъде изпълнен файлът от bin/;
- В systemd-logind е осигурен извикването на SetBrightness() за безопасно изменение на яркостта на екрана за всяка сесия;
- В командата «udevadm info» е добавен флаг «—wait-for-initialization» за изчакване на завършване на инициализацията на устройството;
- В процеса на зареждане на системата обработчикът PID 1 сега показва на екрана имената на юнитите, вместо реда с техните описания. За да се върне предишното поведение, може да се използва опцията StatusUnitFormat в /etc/systemd/system.conf или параметъра на ядрото systemd.status_unit_format;
- В /etc/systemd/system.conf за watchdog в PID 1 е добавена опцията KExecWatchdogSec, която определя тайм-аут за рестартиране с помощта на kexec. Старата настройка
ShutdownWatchdogSec е преименувана на RebootWatchdogSec и определя тайм-аут за операции по време на приключване на работа или обикновен рестарт; - За услугите е добавена нова опция , която позволява задаването на команди, които ще бъдат изпълнени преди ExecStartPre. На основа на кода на грешката, върнат от командата, се взема решение за по-нататъшното изпълнение на единицата — ако кодът е 0, стартирането на единицата продължава, ако е между 1 и 254, мълчаливо завършва без обозначение за провал, а ако е 255 — завършва с обозначение за провал;
- Добавен е новият сервис systemd-pstore.service за извличане на данни от sys/fs/pstore/ и за съхранение в /var/lib/pstore за по-нататъшен анализ;
- В утилитата timedatectl са добавени нови команди за настройка на параметрите NTP за systemd-timesyncd, свързани с мрежовите интерфейси;
- В командата „localectl list-locales“ е прекратено показването на локали, различни от UTF-8;
- Осигурено е игнориране на грешките при присвояване на променливи в файловете sysctl.d/, ако името на променливата започва със символа „-“;
- Сервиз сега напълно отговаря за инициализацията на пуленето на ентропия на генератора на псевдослучайни числа на ядрото на Linux. Сервизите, които изискват коректно инициализиран /dev/urandom, трябва да се стартират след systemd-random-seed.service;
- В зареждача systemd-boot е осигурена опционална възможност за поддръжка с произволна последователност в раздела EFI System Partition (ESP);
- В утилитата bootctl са добавени нови команди „bootctl random-seed“ за генериране на seed-файл в ESP и „bootctl is-installed“ за проверка на инсталацията на зареждача systemd-boot. В bootctl също така е настроен изходът на предупреждения за некоректна конфигурация на зареждащите записи (например, когато образът на ядрото е изтрит, а записа за неговото зареждане е оставен);
- Осигурен е автоматичен избор на swap раздел, когато системата преминава в спящ режим. Разделът се избира в зависимост от зададения за него приоритет, а при равни приоритети — от размера на свободното пространство;
- В /etc/crypttab е добавена опция keyfile-timeout за задаване на времето за изчакване на устройството с ключа за шифроване, преди да се изведе запитване за парола за достъп до шифрования раздел;
- Добавена е опция IOWeight за задаване на тегло на вход/изход за планировчика BFQ;
- В systemd-resolved е добавен строг („strict“) режим на работа за DNS-over-TLS и е реализирана възможност за кеширане само на позитивни DNS-отговори („Cache no-negative“ в resolved.conf);
- За VXLAN в systemd-networkd е добавена опцията GenericProtocolExtension за включване на разширенията на VXLAN протокола. За VXLAN и GENEVE е добавена опцията IPDoNotFragment за задаване на флага за забрана на фрагментацията на изходящите пакети;
- В systemd-networkd в секцията «[Route]» се появи опцията FastOpenNoCookie за активиране на механизма за бързо отваряне на TCP-съединения (TFO — TCP Fast Open, RFC 7413) свързан с отделни маршрути, както и опцията TTLPropagate за настройка на TTL LSP (Label Switched Path). В опцията «Type» е осигурена поддръжка на режимите на маршрутизиране local, broadcast, anycast, multicast, any и xresolve;
- В systemd-networkd в секцията «[Network]» е предложена опцията DefaultRouteOnDevice за автоматизирана настройка на маршрута по подразбиране за зададеното мрежово устройство;
- В systemd-networkd за мрежови мостове са добавени опции ProxyARP и
ProxyARPWifi за настройка на поведението на proxy ARP, MulticastRouter за задаване на параметрите на маршрутизиране в режим multicast, MulticastIGMPVersion за смяна на версията на IGMP (Internet Group Management Protocol) за multicast; - В systemd-networkd за тунели FooOverUDP са добавени опции Local, Peer и PeerPort за настройка на IP адресите на локалната и отдалечената страна, както и на номера на мрежовия порт. За тунели TUN е добавена опцията VnetHeader за настройка на поддръжката на GSO (Generic Segment Offload);
- В systemd-networkd в файловете .network и .link в секцията [Match] е добавена опцията Property, позволяваща да се определят устройства по специфични за тях свойства в udev;
- В systemd-networkd за тунели е добавена опцията AssignToLoopback, управляваща привързването на края на тунела към loopback устройството «lo»;
- В systemd-networkd е автоматизирана активацията на IPv6 стека в случай, че той е блокиран чрез sysctl disable_ipv6 — IPv6 се активира, ако за мрежовия интерфейс са зададени настройки IPv6 (статични или DHCPv6), в противен случай вече зададеното значение на sysctl не се променя;
- В файловете .network настройката CriticalConnection е заменена с опцията KeepConfiguration, предоставяща повече средства за определяне на ситуации («yes», «static», «dhcp-on-stop», «dhcp»), при които systemd-networkd не трябва да променя вече съществуващите съединения при стартиране;
- Отстранена уязвимост , причинена от отсъствието на контрол на достъпа до D-Bus интерфейса на systemd-resolved. Проблемът позволява на непривилегирован потребител да извършва операции, достъпни само за администратори, например, може да промени настройките на DNS и да насочи DNS запитванията към подставен сървър;
- Отстранена уязвимост , свързана с деактивирането на pam_systemd за неинтерактивни сесии, която позволява организирането на спуфинг на активна сесия.
Източник: opennet.ru
