Выпуск сістэмнага мэнэджэра systemd 248

Пасля чатырох месяцаў распрацоўкі прадстаўлены рэліз сістэмнага мэнэджара systemd 248. У новым выпуску забяспечана падтрымка выяў для пашырэння сістэмных каталогаў, файла канфігурацыі /etc/veritytab, утыліты systemd-cryptenroll, разблакаванні LUKS2 пры дапамозе чыпаў TPM2 і токенаў FIDO2, запуску прасторы ідэнтыфікатараў IPC, пратаколу BATMAN для mesh-сетак, бэкенда nftables для systemd-nspawn. Стабілізаваны systemd-oomd.

Асноўныя змены:

  • Рэалізаваная канцэпцыя выяў пашырэння сістэмы (System Extension), якія можна выкарыстаць для пашырэння іерархіі каталогаў /usr/ і /opt/, і даданні дадатковых файлаў падчас працы, нават калі паказаныя каталогі прымантаваныя ў рэжыме толькі для чытання. Пры падлучэнні выявы пашырэння сістэмы яго змесціва накладваецца на іерархію /usr/ і /opt/ пры дапамозе OverlayFS.

    Для падлучэння, адключэнні, прагляду і абнаўленні выяў сістэмных пашырэнняў прапанавана новая ўтыліта systemd-sysext. Для аўтаматычнага падлучэння ўжо ўсталяваных выяў падчас загрузкі дададзены сэрвіс systemd-sysext.service. У файл os-release дададзены параметр "SYSEXT_LEVEL=" для вызначэння ўзроўню падтрымліваемых пашырэнняў сістэмы.

  • Для unit-ов рэалізавана настройка ExtensionImages, якую можна выкарыстоўваць для прывязкі выяў пашырэння сістэмы да іерархіі прасторы імёнаў ФС асобных ізаляваных сэрвісаў.
  • Дададзены файл канфігурацыі /etc/veritytab для налады верыфікацыі дадзеных на блокавым узроўні пры дапамозе модуля dm-verity. Фармат файла аналагічны /etc/crypttab — "імя_падзелу прылада для дадзеных прылада для хэшаў хэш праверкі кораня опцыі". Для налады паводзін dm-verity для каранёвай прылады дададзены параметр каманднага радка ядра systemd.verity.root_options.
  • У systemd-cryptsetup дададзеная магчымасць вымання URI токена PKCS#11 і зашыфраванага ключа з загалоўка метададзеных LUKS2 у фармаце JSON, што дазваляе інтэграваць звесткі аб адкрыцці зашыфраванай прылады ў саму прыладу без прыцягнення вонкавых файлаў.
  • У systemd-cryptsetup прадстаўлена падтрымка разблакавання шыфраваных частак LUKS2 пры дапамозе чыпаў TPM2 і токенаў FIDO2, акрамя раней падтрымоўваных токенаў PKCS#11. Загрузка libfido2 ажыццяўляецца праз dlopen(), г.зн. наяўнасць правяраецца на лета, а не ў форме жорстка прывязанай залежнасці.
  • У /etc/crypttab для systemd-cryptsetup дададзены новыя опцыі "no-write-workqueue" і "no-read-workqueue" для ўключэння сінхроннай апрацоўкі ўводу/высновы, звязанага з шыфраваннем і расшыфроўкай.
  • Ва ўтыліту systemd-repart дададзена магчымасць актывацыі шыфраваных частак пры дапамозе чыпаў TPM2, напрыклад, для стварэння шыфраванай часткі /var пры першай загрузцы.
  • Дададзена ўтыліта systemd-cryptenroll для прывязкі токенаў TPM2, FIDO2 і PKCS#11 да частак LUKS, а таксама для адмацавання і прагляду токенаў, прывязкі запасных ключкоў і заданні пароля для доступу.
  • Дададзены параметр PrivateIPC, які дазваляе ў unit-файле наладзіць запуск працэсаў у ізаляванай прасторы IPC са сваімі асобнымі ідэнтыфікатарамі і чаргой паведамленняў. Для падлучэння unit-а да ўжо створанай прасторы ідэнтыфікатараў IPC прапанавана опцыя IPCNamespacePath.
  • Дададзеныя налады ExecPaths і NoExecPaths, якія дазваляюць ужыць сцяг noexec да асобных частак файлавай сістэмы.
  • У systemd-networkd дададзеная падтрымка mesh-пратаколу BATMAN ("Better Approach To Mobile Adhoc Networking"), які дазваляе ствараць дэцэнтралізаваныя сеткі, кожны вузел у якіх звязаны праз суседнія вузлы. Для налады прапанаваны секцыя [BatmanAdvanced] у .netdev , параметр BatmanAdvanced у файлах .network і новы тып прылады "batadv".
  • Стабілізаваная рэалізацыя механізму ранняга рэагавання на недахоп памяці ў сістэме systemd-oomd. Дададзена опцыя DefaultMemoryPressureDurationSec для настройкі часу чакання вызвалення рэсурсу перад уздзеяннем на unit. Systemd-oomd выкарыстоўвае падсістэму ядра PSI (Pressure Stall Information) і дазваляе выявіць пачатак узнікнення затрымак з-за недахопу рэсурсаў і выбарачна завяршыць працу рэсурсаёмістых працэсаў на стадыі, калі сістэма яшчэ не знаходзіцца ў крытычным стане і не пачынае інтэнсіўна ўразаць кэш і выцясняць дадзеныя ў раздзел падпампоўкі.
  • Дададзены параметр каманднага радка ядра – «root=tmpfs», які дазваляе прымантаваць каранёвую частку ў часавым сховішчы, размешчаным у аператыўнай памяці пры дапамозе Tmpfs.
  • Параметр у /etc/crypttab, вызначальны файл з ключом, зараз можа паказваць на сокеты з тыпам AF_UNIX і SOCK_STREAM. Ключ у гэтым выпадку павінен аддавацца пры падлучэнні да сокета, што, напрыклад, можа ўжывацца для стварэння сэрвісаў, якія дынамічна аддаюць ключы.
  • Запасное імя хаста (fallback) для выкарыстання сістэмным мэнэджарам і systemd-hostnamed зараз можа быць зададзена двума шляхамі: праз параметр DEFAULT_HOSTNAME у os-release і праз зменную асяроддзі $SYSTEMD_DEFAULT_HOSTNAME. У systemd-hostnamed таксама рэалізавана апрацоўка ўказання "localhost" у імя хаста і дададзена магчымасць экспарту імя хаста, а таксама ўласцівасцяў "HardwareVendor" і "HardwareModel" праз DBus.
  • Блок з выстаўляемымі зменнымі асяроддзі зараз можа быць наладжаны праз новую опцыю ManagerEnvironment у system.conf або user.conf, а не толькі праз камандны радок ядра і налады unit-файлаў.
  • На стадыі кампіляцыі прадастаўлена магчымасць выкарыстання для запуску працэсаў сістэмнага выкліку fexecve() замест execve() для скарачэння затрымкі паміж праверкай кантэксту бяспекі і яго прымяненнем.
  • Для unit-файлаў дададзены новыя ўмоўныя аперацыі ConditionSecurity=tpm2 і ConditionCPUFeature для праверкі наяўнасці прылад TPM2 і асобных магчымасцяў CPU (напрыклад, ConditionCPUFeature=rdrand можна выкарыстоўваць для праверкі падтрымкі працэсарам аперацыі RDRAND).
  • Для даступных ядраў рэалізавана аўтаматычная генерацыя табліц сістэмных выклікаў для фільтраў seccomp.
  • Дададзена магчымасць падстаноўкі новых прывязак мантавання (bind mounts) у існуючыя прасторы кропак мантавання (mount namespace) сэрвісаў, без перазапуску сэрвісаў. Падстаноўка выконваецца камандамі 'systemctl bind …' і 'systemctl mount-image …'.
  • У налады StandardOutput і StandardError дададзена падтрымка ўказання шляхоў у форме «truncate: » для ачысткі перад выкарыстаннем.
  • У sd-bus дададзена магчымасць усталёўкі злучэння з сеансам зададзенага карыстача ўсярэдзіне лакальнага кантэйнера. Напрыклад "systemctl -user -M lennart @ start quux".
  • У файлах systemd.link у секцыі [Link] рэалізаваны параметры:
    • Promiscuous - дазваляе перавесці прыладу ў рэжым "promiscuous" для апрацоўкі ўсіх сеткавых пакетаў, уключаючы не адрасаваныя бягучай сістэме;
    • TransmitQueues і ReceiveQueues для налады колькасці чэргаў TX і RX;
    • TransmitQueueLength для наладкі памеру чаргі TX; GenericSegmentOffloadMaxBytes і GenericSegmentOffloadMaxSegment для задання лімітаў прымянення тэхналогіі GRO (Generic Receive Оffload).
  • У файлы systemd.network дададзены новыя налады:
    • [Network] RouteTable для выбару табліцы маршрутызацыі;
    • [RoutingPolicyRule] Type для тыпу маршрутызацыі ("blackhole, "unreachable", "prohibit");
    • [IPv6AcceptRA] RouteDenyList і RouteAllowList для спісаў дазволеных і забароненых анонсаў маршрутаў;
    • [DHCPv6] UseAddres для ігнаравання выдаванага DHCP адрасы;
    • [DHCPv6PrefixDelegation] ManageTemporaryAddress;
    • ActivationPolicy для вызначэння палітыкі ў дачыненні да актыўнасці інтэрфейсу (заўсёды падтрымліваць у стане UP або DOWN або дазволіць карыстачу мяняць станы камандай «ip link set dev»).
  • У файлы systemd.netdev дададзены опцыі [VLAN] Protocol, IngressQOSMaps, EgressQOSMaps і [MACVLAN] BroadcastMulticastQueueLength для настройкі апрацоўкі пакетаў VLAN.
  • Спынена мантаванне каталога /dev/ у рэжыме noexec, бо гэта прыводзіць да канфлікту пры выкарыстанні выкананага сцяга з файламі /dev/sgx. Для вяртання старых паводзін можна выкарыстоўваць наладу NoExecPaths=/dev.
  • Правы доступу да файла /dev/vsock зменены на 0o666, а файлы /dev/vhost-vsock і /dev/vhost-net перамешчаныя ў групу kvm.
  • База ідэнтыфікатараў абсталявання пашырана USB-прыладамі для чытання адбіткаў пальцаў, карэктна якія падтрымліваюць пераход у спячы рэжым.
  • systemd-resolved дададзена падтрымка выдачы адказаў на DNSSEC-запыты праз stub-рэзалвер. Лакальныя кліенты могуць праводзіць DNSSEC-валідацыю саміх сябе, а вонкавыя праксіруюцца ў нязменным выглядзе да бацькоўскага DNS-серверу.
  • У resolved.conf дададзена опцыя CacheFromLocalhost, пры ўсталёўцы якой systemd-resolved будзе выкарыстоўваць кэшыроўныя нават для зваротаў да DNS-серверу па адрасе 127.0.0.1 (па змаўчанні кэшаванне падобных запытаў адключана для выключэння падвойнага кэшавання).
  • У systemd-resolved дададзеная падтрымка RFC-5001 NSID у лакальным DNS-рэзалверы, якая дазваляе кліентам адрозніць узаемадзеянне з лакальным рэзалверам і іншым серверам DNS.
  • Ва ўтыліце resolvectl рэалізавана магчымасць вываду звестак аб крыніцы паступлення дадзеных (лакальны кэш, запыт па сетцы, адказ лакальнага апрацоўшчыка) і прымяненні шыфравання пры перадачы дадзеных. Для кіравання працэсам вызначэння імя прапанаваны опцыі -cache, -synthesize, -network, -zone, -trust-anchor і -validate.
  • У systemd-nspawn дададзеная падтрымка налады міжсеткавага экрана пры дапамозе nftables у дадатак да існай падтрымкі iptables. У наладзе IPMasquerade у systemd-networkd дададзена магчымасць выкарыстання бэкенда на аснове nftables.
  • У systemd-localed дададзеная падтрымка выкліку locale-gen для генерацыі якія адсутнічаюць лакаляў.
  • У розныя ўтыліты дададзены опцыі -pager/-no-pager/-json= для ўключэння/выключэнні рэжыму пастаронкавага прагляду і вываду ў фармаце JSON. Дададзена магчымасць усталёўкі ліку выкарыстоўваных у тэрмінале колераў праз зменную асяроддзі SYSTEMD_COLORS ("16" або "256").
  • Абвешчаныя састарэлымі зборка з паасобнымі іерархіямі каталогаў (падзел / і /usr) і падтрымка cgroup v1.
  • Асноўная галінка ў Git пераназваная з 'master' у 'main'.

Крыніца: opennet.ru

Дадаць каментар