След три месеца разработка е представен релиз на системния мениджър systemd 249. В новото издание е осигурена възможност за определяне на потребители/групи във формат JSON, стабилизиран е протоколът Journal, улеснена е организацията на зареждането на последователно сменящи се дискови дялове, добавена е възможност за свързване на BPF програми със servicios, реализирано е мапиране на идентификатори на потребители в монтираните дялове, предложени са множество нови настройки за мрежата и възможности за стартиране на контейнери.
Основни промени:
- Документиран е протоколът Journal, който може да се използва в клиентските приложения вместо протокола syslog за локална доставка на лог записи. Протоколът Journal е реализиран още отдавна и вече се използва в някои клиентски библиотеки, въпреки че официалната му поддръжка е обявена едва сега.
- В userdb и nss-systemd е осигурено четене на допълнителни определения на потребители, разположени в директориите /etc/userdb/, /run/userdb/, /run/host/userdb/ и /usr/lib/userdb/, зададени във формат JSON. Отбелязва се, че посочената възможност ще предостави допълнителен механизъм за създаване на потребители в системата, осигурявайки пълна интеграция с NSS и /etc/shadow. Поддръжката на формат JSON за записи на потребители/групи също ще позволи прикрепяне на различни параметри за управление на ресурсите и други настройки, които са разпознавани от pam_systemd и systemd-logind.
- В nss-systemd е осигурен синтез на записи на потребители/групи в /etc/shadow с използване на хеширани пароли от systemd-homed.
- Реализиран е механизъм, който улеснява организирането на актуализация с използване на последователно сменящи се дискови дялове (един дял е активен, а другият резервен — актуализацията се копира на резервния дял, след което той става активен). Ако в дисковия образ съществуват два коренови или /usr дяла и udev не е определил наличието на параметър ‘root=’ или се извършва обработка на дискови образи, посочени чрез опцията „—image“ в утилитите systemd-nspawn и systemd-dissect, дялът за зареждане може да бъде изчислен чрез сравнение на GPT етикети (подразбира се, че в етикета GPT се споменава номер на версията на съдържанието на дяла и systemd ще избере дял с по-нови изменения).
- В файловете на услугите е добавена настройката BPFProgram, с която можете да организирате зареждането на BPF програми в ядрото и управлението им, свързано с определени услуги на systemd.
- В systemd-fstab-generator и systemd-repart е добавена възможността за зареждане от дискове, на които има само дял /usr и няма коренов дял (кореновият дял ще бъде генериран от утилитата systemd-repart по време на първоначалното зареждане).
- В systemd-nspawn опцията «—private-user-chown» е заменена с по-универсалната опция «—private-user-ownership», която може да приема стойности като «chown» (еквивалент на «—private-user-chown»), «off» за деактивиране на старата настройка, «map» за мапиране на идентификаторите на потребителите в монтираните файлови системи, и «auto» за избор на «map», ако необходимата функционалност съществува в ядрото (5.12+) или обратно на рекурсивен повик на «chown» в противен случай. С мапирането можете да свържете файлове на един потребител в монтиран дял на друг потребител в текущата система, което улеснява споделянето на файлове между различни потребители. В механизма на преносимите домашни директории systemd-homed, мапирането позволява на потребителите да преместват своите домашни директории на външни носители и да ги използват на различни компютри, където разпределението на идентификаторите на потребителите не съвпада.
- В systemd-nspawn в опцията «—private-user» сега можете да използвате стойността «identity» за директно отразяване на идентификаторите на потребителите при настройването на пространството на имена (user namespace), т.е. UID 0 и UID 1 в контейнера ще се отразят в UID 0 и UID 1 от страната на хоста, за да се намалят векторите на атака (контейнерът ще получи възможности само в своето пространство на имена).
- В systemd-nspawn е добавена опцията «—bind-user» за предаване в контейнера на потребителска сметка, налична в хост-околната среда (в контейнера се монтира домашната директория, добавя се запис на потребителя/групата и се извършва мапиране на UID между контейнера и хост-околната среда).
- В systemd-ask-password и systemd-sysusers е добавена поддръжка за запитване на зададените пароли (passwd.hashed-password. и passwd.plaintext-password.) чрез нововедения механизъм за безопасна предаване на конфиденциални данни с помощта на междинни файлове в отделна директория, включен в версия systemd 247. По подразбиране данните се приемат от процеса с PID1, който ги получава, например, от мениджъра на контейнери, позволявайки настройка на парола на потребителя при първоначално зареждане.
- В systemd-firstboot е добавена поддръжка за използване на механизъм за безопасна предаване на конфиденциални данни за запитване на различни параметри на системата, който може да се използва за инициализиране на системните настройки при първоначално зареждане на контейнерен образ, в който липсват необходимите настройки в директорията /etc.
- В процеса PID 1 по време на зареждане се осигурява показване едновременно на името и описанието на единицата. Изходът може да бъде променен чрез параметъра „StatusUnitFormat=combined“ в system.conf или опцията за командния ред на ядрото „systemd.status-unit-format=combined“
- В утилитите systemd-machine-id-setup и systemd-repart е добавена опция „—image“ за предаване на файл с идентификатора на машината в дисков образ или за увеличаване на размера на дисковия образ.
- В конфигурационния файл на разделите, използван от утилитата systemd-repart, е добавен параметър MakeDirectories, който може да се използва за създаване на произволни директории в създаваната файлова система на етапа преди отразяването в таблицата на разделите (например, за да се създадат директории за точки на монтиране в кореновия дял, за да може директорията да бъде веднага монтирана в режим само за четене). За управление на GPT-флаговете в създаваните раздели са добавени съответните параметри Flags, ReadOnly и NoAuto. В параметъра CopyBlocks е реализирано значение „auto“ за автоматичен избор на текущия зареждащ дял като източник при копиране на блокове (например, когато е необходимо да се пренесе собственото кореново разделение на нов носител).
- В GPT е реализиран флаг «grow-file-system», аналогичен опцията за монтиране x-systemd.growfs, който осигурява автоматично разширяване на размера на файловата система до границите на блочното устройство, ако размерът на файловата система е по-малък от раздела. Флагът е приложим за файловите системи Ext3, XFS и Btrfs и може да се прилага към автоматично определяници на раздели. По подразбиране флагът се включва за записваемите раздели, автоматично създавани чрез systemd-repart. За конфигуриране на флага в systemd-repart е добавена опция GrowFileSystem.
- В файла /etc/os-release е реализирана поддръжка на нови променливи IMAGE_VERSION и IMAGE_ID за определяне на версията и идентификатора на атомарно актуализирани образи. За заместване на указаните стойности в различни команди са предложени спецификатори %M и %A.
- В утилитата portablectl е добавен параметър «—extension» за активиране на преносимите образи на разширението на системата (например, чрез тях могат да се разпространяват образи с допълнителни услуги, интегрирани в кореновия раздел).
- В утилитата systemd-coredump е осигурено извличането на ELF-информация build-id при формирането на core-дампа на процеса, което може да бъде полезно за определяне към кой пакет принадлежи сбоящият процес, ако информацията за името и версията на deb- или rpm-пакетите е вградена в ELF-файловете.
- В udev е добавена нова база данни на оборудването за устройства FireWire (IEEE 1394).
- В udev в схемата за избор на имена на мрежови интерфейси «net_id» са добавени три изменения, които нарушават обратната съвместимост: некоректните символи в имената на интерфейсите сега се заменят с «_»; имената на слотовете PCI hotplug за системи s390 се обработват в шестнадесетична форма; разрешено е използването на до 65535 вградени PCI-устройства (по-рано номера над 16383 бяха блокирани).
- В systemd-resolved в списъка NTA (Negative Trust Anchors) е добавен домейн «home.arpa», препоръчан за локални домашни мрежи, но не прилаган в DNSSEC.
- В параметъра CPUAffinity е осигурен анализ на спецификаторите «%».
- В файловете «.network» е добавен параметър ManageForeignRoutingPolicyRules, който може да се използва за изключване на обработката в systemd-networkd на чужди маршрутиращи политики.
- В файловете «.network» е добавен параметър RequiredFamilyForOnline за определяне на наличието на IPv4 или IPv6 адрес като признак за състоянието «online» на мрежовия интерфейс. В networkctl е осигурено отображение на състоянието «online» за всеки линк.
- В файловете «.network» е добавен параметър OutgoingInterface за определяне на изходящите интерфейси при настройка на мрежови мостове.
- В файловете «.network» е добавен параметър Group, който позволява настройка на група Multipath за записите в секция «[NextHop]».
- В systemd-network-wait-online са добавени опции «-4» и «-6» за ограничаване на изчакването на свързаност само за IPv4 или IPv6.
- В настройките на DHCP сървъра е добавен параметър RelayTarget, който превключва сървъра в режим DHCP Relay. За допълнителна настройка на DHCP релея са предложени опции RelayAgentCircuitId и RelayAgentRemoteId.
- В DHCP сървъра е добавен параметър ServerAddress, който позволява явно задаване на IP адреса на сървъра (в противен случай адресът се избира автоматично).
- В DHCP сървъра е реализирана секция [DHCPServerStaticLease], която позволява настройка на статични наеми на адреси (DHCP leases), указвайки привързаности на фиксирани IP адреси към MAC адреси и обратно.
- В настройката RestrictAddressFamilies е реализирана поддръжка на стойността «none», при която на сервиза не ще бъдат достъпни сокетите на никакви адресни семейства.
- В файловете «.network» в секции [Address], [DHCPv6PrefixDelegation] и [IPv6Prefix] е реализирана поддръжка на настройка RouteMetric, позволяваща задаване на метрика за префикса на маршрута, създаден за указан адрес.
- В nss-myhostname и systemd-resolved е осигурен синтез на DNS записи с адресите за хостове със специално име «_outbound», за които винаги се предоставя локален IP адрес, избран в съответствие с маршрутите по подразбиране, използвани за изходящи връзки.
- В файловете .network в секция «[DHCPv4]» е добавена по подразбиране активна настройка RoutesToNTP, която предписва добавяне на отделен маршрут през текущия мрежов интерфейс за достъп до адреса на NTP сървъра, получен за този интерфейс чрез DHCP (по аналогия с DNS настройката позволява да се гарантира, че трафикът към NTP сървъра ще бъде насочен през интерфейса, от който този адрес е получен).
- Добавени са настройки SocketBindAllow и SocketBindDeny за управление на достъпа до сокетите, свързани с текущия сервиз.
- За unit файловете е реализирана условна настройка ConditionFirmware, позволяваща създаването на проверки, оценяващи функциите на фърмуера, като работа в системи UEFI и device.tree, а също и проверка на съвместимост с определени възможности на device-tree.
- Въведена е опцията ConditionOSRelease за проверка на полета в файла /etc/os-release. При определяне на условията за проверка на стойностите на полетата са допустими операторите „=“, „!=“, „<“, „=“, „>“.
- В утилитата hostnamectl командите от вида „get-xyz“ и „set-xyz“ вече нямат префиксите „get“ и „set“, например, вместо „hostnamectl get-hostname“ и „hostnamectl set-hostname“ може да се използва командата „hostnamectl hostname“, където присвояването на стойност се задава с допълнителен аргумент („hostnamectl hostname value“). Поддръжката на старите команди е запазена за осигуряване на съвместимост.
- В утилитата systemd-detect-virt и настройката ConditionVirtualization е осигурена коректна идентификация на среди в Amazon EC2.
- Настройката LogLevelMax в unit-файловете сега се прилага не само за лог-съобщенията, създадени от сервиза, но и за съобщенията на процеса PID 1, в които се споменава сервиза.
- Предоставена е възможност за включване на данните SBAT (UEFI Secure Boot Advanced Targeting) в файловете systemd-boot EFI PE.
- В /etc/crypttab са реализирани нови опции „headless“ и „password-echo“ — първата позволява да се пропуснат всички операции, свързани с интерактивно запитване за парола и ПИН от потребителя, а втората дава възможност за настройка на метода на показване на въвеждане на паролата (нищо да не се показва, да се показва по символи и да се показват звездички). В systemd-ask-password е добавена опция „—echo“ за аналогични цели.
- В systemd-cryptenroll, systemd-cryptsetup и systemd-homed е разширена поддръжката за отключване на криптирани LUKS2 дялове с помощта на токени FIDO2. Добавени са нови опции „—fido2-with-user-presence“, „—fido2-with-user-verification“ и „—fido2-with-client-pin“ за управление на проверката на физическото присъствие на потребителя, верификацията и необходимостта от въвеждане на ПИН-код.
- В systemd-journal-gatewayd са добавени опциите „—user“, „—system“, „—merge“ и „—file“, аналогични на същите опции в journalctl.
- В допълнение към прякото зависимост между юнитите, зададено чрез параметрите OnFailure и Slice, е добавена поддръжка за неявни обратни зависимости OnFailureOf и SliceOf, които могат да бъдат полезни, например, за определяне на всички юнити, влизащи в slice.
- Добавени са нови типове зависимости между юнитите: OnSuccess и OnSuccessOf (противоположност на OnFailure, която се задейства при успешно завършване); PropagatesStopTo и StopPropagatedFrom (позволяват разпространението на събитие за спиране на юнит на друг юнит); Upholds и UpheldBy (алтернатива на Restart).
- В утилитата systemd-ask-password е добавена опция «—emoji» за управление появата на символа на ключалка (🔐) в полето за въвеждане на паролата.
- Добавена е документация за структурата на дървото на изходните текстове на systemd.
- За unit-ите е добавено свойство MemoryAvailable, което показва колко памет остава на unit-а в резерв преди достигане на лимита, зададен чрез параметрите MemoryMax, MemoryHigh или MemoryAvailable.
Източник: opennet.ru
