Випуск системного менеджера systemd 249

Після трьох місяців розробки представлений реліз системного менеджера 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, з використанням проміжних файлів в окремому каталозі. За замовчуванням облікові дані приймаються від процесу з 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 16383 вбудованих PCI-пристроїв (раніше номери вище XNUMX XNUMX блокувалися).
  • У 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 Ralay. Для додаткового налаштування 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 — перша дозволяє пропустити всі операції, пов'язані з інтерактивним запитом паролів та 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, які можуть бути корисні, наприклад, для визначення всіх unit-ів, що входять до slice.
  • Додані нові типи залежностей між unit-ами: OnSuccess і OnSuccessOf (протилежність OnFailure, що викликається при успішному завершенні); PropagatesStopTo і StopPropagatedFrom (дозволяють поширити подію зупинки unit-а на інший unit); Upholds та UpheldBy (альтернатива Restart).
  • В утиліті systemd-ask-password з'явилася опція «emoji» для управління появою символу замка (🔐) у рядку введення пароля.
  • Додано документацію по структурі дерева вихідних текстів systemd.
  • Для unit-ів додано властивість MemoryAvailable, що показує скільки пам'яті залишається у unit-а в запасі до досягнення ліміту, виставленого через параметри MemoryMax, MemoryHigh або MemoryAvailable.

Джерело: opennet.ru

Додати коментар або відгук