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 使用来自 systemd-homed 的散列密码来综合 /etc/shadow 中的用户/组条目。
  • 已经实现了一种机制,该机制使用相互替换的磁盘分区来简化更新的组织(一个分区是活动分区,第二个分区是备用分区 - 更新被复制到备用分区,然后变为活动分区)。 如果磁盘映像中有两个 root 或 /usr 分区,并且 udev 未检测到 'root=' 参数的存在,或者正在处理通过 systemd-nspawn 和 systemd 中的“--image”选项指定的磁盘映像-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”在已安装的文件系统上映射用户 ID,“auto”选择“map”(如果内核(5.12+)中存在所需的功能或回退)否则递归调用“chown”。 使用映射,您可以将已安装的外部分区上的一个用户的文件映射到当前系统上的另一个用户,从而更轻松地在不同用户之间共享文件。 在 systemd-homed 便携式主目录机制中,映射将允许用户将其主目录移动到外部介质,并在不具有相同用户 ID 布局的不同计算机上使用它们。
  • 在systemd-nspawn中,“--private-user”选项现在可以在设置用户命名空间时使用值“identity”来直接反映用户ID,即容器中的UID 0和UID 1将反映在主机端的UID 0和UID 1中,以减少攻击向量(容器将仅接收其命名空间中的进程能力)。
  • systemd-nspawn 中添加了“--bind-user”选项,用于将主机环境中存在的用户帐户转发到容器(将主目录挂载到容器中,添加用户/组条目,以及 UID 映射)在容器和主机环境之间执行)。
  • 添加了对向 systemd-ask-password 和 systemd-sysusers 请求设置密码的支持(passwd.hashed-password)。 和 passwd.plaintext 密码。 )使用 systemd 247 中引入的机制,使用单独目录中的中间文件安全地传输敏感数据。 默认情况下,从具有 PID1 的进程接受凭据,该进程从容器管理管理器接收凭据,该管理器允许您在首次启动时配置用户密码。
  • systemd-firstboot 添加了对使用敏感数据安全传输机制来查询各种系统参数的支持,可用于在首次启动 /etc 目录中没有必要设置的容器映像时初始化系统设置。
  • PID 1 进程确保在引导期间显示单元名称和描述。 您可以通过 system.conf 中的“StatusUnitFormat=combined”参数或内核命令行选项“systemd.status-unit-format=combined”更改输出
  • “--image”选项已添加到 systemd-machine-id-setup 和 systemd-repart 实用程序中,用于将具有计算机 id 的文件传输到磁盘映像或增加磁盘映像的大小。
  • systemd-repart 实用程序使用的分区配置文件中添加了 MakeDirectories 参数,该参数可用于在反映到分区表中之前在创建的文件系统中创建任意目录(例如,为挂载点创建目录)根分区,以便您可以立即以只读模式挂载该分区)。 为了控制创建的节中的 GPT 标志,添加了相应的 Flags、ReadOnly 和 NoAuto 参数。 CopyBlocks 参数的值为“auto”,以便在复制块时自动选择当前引导分区作为源(例如,当您需要将自己的根分区传输到新介质时)。
  • GPT 实现了“grow-file-system”标志,该标志类似于 x-systemd.growfs 挂载选项,并且如果 FS 大小小于分区,则可以自动将 FS 大小扩展到块设备的边界。 该标志适用于 Ext3、XFS 和 Btrfs 文件系统,并且可以应用于自动检测到的分区。 默认情况下,对于通过 systemd-repart 自动创建的可写分区启用该标志。 添加了 GrowFileSystem 选项来配置 systemd-repart 中的标志。
  • /etc/os-release 文件提供对新 IMAGE_VERSION 和 IMAGE_ID 变量的支持,以确定原子更新的映像的版本和 ID。 建议使用 %M 和 %A 说明符将指定值替换到各种命令中。
  • “--extension”参数已添加到 portablectl 实用程序中,以激活可移植系统扩展映像(例如,通过它们,您可以将映像与集成到根分区中的附加服务一起分发)。
  • systemd-coredump 实用程序在生成进程的核心转储时提供 ELF build-id 信息的提取,如果构建了有关 deb 或 rpm 包的名称和版本的信息,这对于确定失败进程属于哪个包非常有用到 ELF 文件中。
  • udev 中添加了适用于 FireWire (IEEE 1394) 设备的新硬件基础。
  • 在 udev 中,“net_id”网络接口名称选择方案中添加了三项更改,这些更改违反了向后兼容性:接口名称中的错误字符现在被替换为“_”; s390系统的PCI热插拔插槽名称以十六进制形式处理; 允许使用最多 65535 个内置 PCI 设备(之前超过 16383 个的数字被阻止)。
  • systemd-resolved 将“home.arpa”域添加到 NTA(负信任锚)列表中,建议用于本地家庭网络,但未在 DNSSEC 中使用。
  • CPUAffinity 参数提供“%”说明符的解析。
  • ManageForeignRoutingPolicyRules 参数已添加到 .network 文件中,该参数可用于排除 systemd-networkd 处理第三方路由策略。
  • requiredFamilyForOnline 参数已添加到“.network”文件中,以确定是否存在 IPv4 或 IPv6 地址,作为网络接口处于“在线”状态的标志。 Networkctl 提供每个链接的“在线”状态的显示。
  • 在 .network 文件中添加了 OutgoingInterface 参数,以在配置网桥时定义传出接口。
  • 组参数已添加到“.network”文件中,允许您为“[NextHop]”部分中的条目配置多路径组。
  • 向 systemd-network-wait-online 添加了选项“-4”和“-6”,以将连接等待限制为仅 IPv4 或 IPv6。
  • RelayTarget 参数已添加到 DHCP 服务器设置中,该参数可将服务器切换到 DHCP Ralay 模式。 对于 DHCP 中继的其他配置,提供了 RelayAgentCircuitId 和 RelayAgentRemoteId 选项。
  • ServerAddress 参数已添加到 DHCP 服务器中,允许您显式设置服务器 IP 地址(否则将自动选择该地址)。
  • DHCP 服务器实现 [DHCPServerStaticLease] 部分,它允许您配置静态地址绑定(DHCP 租用),指定固定 IP 绑定到 MAC 地址,反之亦然。
  • RestrictAddressFamilies 设置支持“none”值,这意味着该服务将无法访问任何地址族的套接字。
  • 在“.network”文件的[Address]、[DHCPv6PrefixDelegation]和[IPv6Prefix]部分中,实现了对RouteMetric设置的支持,它允许您指定为指定地址创建的路由前缀的度量。
  • nss-myhostname 和 systemd-resolved 提供 DNS 记录与具有特殊名称“_outbound”的主机地址的综合,始终为其颁发本地 IP,根据用于传出连接的默认路由进行选择。
  • 在 .network 文件中的“[DHCPv4]”部分中,添加了默认活动的 RoutesToNTP 设置,该设置需要通过当前网络接口添加单独的路由,以访问使用 DHCP 为该接口获取的 NTP 服务器地址(类似于 DNS ,该设置允许您保证到 NTP 服务器的流量将通过接收该地址的接口进行路由)。
  • 添加了 SocketBindAllow 和 SocketBindDeny 设置来控制对绑定到当前服务的套接字的访问。
  • 对于单元文件,已经实现了名为 ConditionFirmware 的条件设置,它允许您创建评估固件功能的检查,例如在 UEFI 和 device.tree 系统上的工作,以及检查与某些设备树功能的兼容性。
  • 实现了 ConditionOSRelease 选项来检查 /etc/os-release 文件中的字段。 定义检查字段值的条件时,可以使用运算符“=”、“!=”、“<”、“<=”、“>=”、“>”。
  • 例如,在 hostnamectl 实用程序中,“get-xyz”和“set-xyz”等命令不再使用“get”和“set”前缀,而不是“hostnamectl get-hostname”和“hostnamectl “set-hostname”您可以使用命令“hostnamectl主机名”,其中的值的分配是通过指定附加参数(“hostnamectl主机名值”)来确定的。 保留了对旧命令的支持以确保兼容性。
  • systemd-detect-virt 实用程序和 ConditionVirtualization 设置可确保正确识别 Amazon EC2 环境。
  • 单元文件中的 LogLevelMax 设置现在不仅适用于服务生成的日志消息,还适用于提及该服务的 PID 1 进程消息。
  • 提供了在 systemd 启动 EFI PE 文件中包含 SBAT(UEFI 安全启动高级目标)数据的能力。
  • /etc/crypttab 实现了新选项“headless”和“password-echo” - 第一个选项允许您跳过与交互式提示用户输入密码和 PIN 相关的所有操作,第二个选项允许您配置显示密码输入的方​​法(不显示任何内容,逐个字符显示并显示星号)。 出于类似目的,“--echo”选项已添加到 systemd-ask-password 中。
  • systemd-cryptenroll、systemd-cryptsetup 和 systemd-homed 扩展了对使用 FIDO2 令牌解锁加密 LUKS2 分区的支持。 添加了新选项“--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 隐式反向依赖关系的支持,这对于确定切片中包含的所有单元等很有用。
  • 在单元之间添加了新类型的依赖关系:OnSuccess 和 OnSuccessOf(与 OnFailure 相反,在成功完成时调用); PropagatesStopTo 和 StopPropagatedFrom(允许您将一个单元的停止事件传播到另一个单元); Upholds 和 UpheldBy(重新启动的替代方案)。
  • systemd-ask-password 实用程序现在有一个“--emoji”选项来控制密码输入行中挂锁符号 (🔐) 的外观。
  • 添加了有关 systemd 源树结构的文档。
  • 对于单元,添加了 MemoryAvailable 属性,显示单元在达到通过 MemoryMax、MemoryHigh 或 MemoryAvailable 参数设置的限制之前还剩余多少内存。

来源: opennet.ru

添加评论