След три месеца разработка е представен релиз на системния мениджър systemd 249. В новото издание е осигурена възможност за определяне на потребители/групи във формат JSON, стабилизирано е протоколът Journal, опростена е организацията на зареждането на редуващи се дялове, добавена е възможност за свързване на BPF програми към услуги, реализиран е мапинг на идентификаторите на потребителите в монтирани дялове, предложена е голяма доза нови мрежови настройки и възможности за стартиране на контейнери.
Основни промени:
- Документиран е протоколът 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 с помощта на междинни файлове в отделна директория. По подразбиране удостоверенията се приемат от процес с PID 1, който ги получава например от мениджъра на контейнери, което позволява настройка на паролата на потребителя при първото зареждане.
- В 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 relay са предложени опциите 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» — първата позволява да се пропуснат всички операции, свързани с интерактивно искане на пароли и PIN код от потребителя, а втората дава възможност за настройка на метода на показване на въвеждане на паролата (нищо да не се показва, да се показва по символи и да се показват звездички). В systemd-ask-password за аналогични цели е добавена опция «—echo».
- В systemd-cryptenroll, systemd-cryptsetup и systemd-homed е разширена поддръжката за отключване на криптирани дялове LUKS2 с помощта на токени FIDO2. Добавени са нови опции «—fido2-with-user-presence», «—fido2-with-user-verification» и «—fido2-with-client-pin» за управление на проверката на физическото присъствие на потребителя, верификацията и необходимостта от въвеждане на 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
