Lanzamiento del gestor de sistema systemd 249

Después de tres meses de desarrollo, se presenta la versión 249 del gestor de sistema systemd. En esta nueva versión se ha añadido la capacidad de definir usuarios/grupos en formato JSON, se ha estabilizado el protocolo Journal, se ha simplificado la organización de la carga de particiones de disco que se suceden, se ha añadido la posibilidad de vincular programas BPF a servicios, se ha implementado el mapeo de identificadores de usuarios en particiones montadas y se ha ofrecido una gran cantidad de nuevas configuraciones de red y posibilidades para ejecutar contenedores.

Principales cambios:

  • Se ha documentado el protocolo Journal, que se puede utilizar en clientes en lugar del protocolo syslog para la entrega local de registros. El protocolo Journal se implementó hace bastante tiempo y ya se utiliza en algunas bibliotecas de clientes, sin embargo, su soporte oficial se ha declarado solo ahora.
  • En userdb y nss-systemd se ha habilitado la lectura de definiciones adicionales de usuarios, ubicadas en los directorios /etc/userdb/, /run/userdb/, /run/host/userdb/ y /usr/lib/userdb/, especificadas en formato JSON. Se señala que esta capacidad proporcionará un mecanismo adicional para crear usuarios en el sistema, asegurando su plena integración con NSS y /etc/shadow. El soporte para el formato JSON para registros de usuarios/grupos también permitirá asociar a los usuarios varios parámetros de control de recursos y otras configuraciones que reconozcan pam_systemd y systemd-logind.
  • En nss-systemd se ha garantizado la síntesis de registros de usuario/grupo en /etc/shadow utilizando contraseñas hash de systemd-homed.
  • Se ha implementado un mecanismo que simplifica la organización de la actualización mediante la utilización de particiones de disco que se sustituyen entre sí (una partición activa y otra de reserva; la actualización se copia a la partición de reserva, tras lo cual esta se convierte en activa). Si en la imagen del disco hay dos particiones raíz o /usr y udev no ha determinado la existencia del parámetro 'root=' o se está procesando imágenes de disco especificadas mediante la opción '—image' en las utilidades systemd-nspawn y systemd-dissect, la partición de arranque puede calcularse mediante la comparación de etiquetas GPT (se supone que en la etiqueta GPT se menciona el número de versión del contenido de la partición y systemd seleccionará la partición con cambios más recientes).
  • Se ha añadido la configuración BPFProgram a los archivos de servicios, mediante la cual se puede organizar la carga de programas BPF en el núcleo y gestionarlos vinculándolos a ciertos servicios de systemd.
  • Se ha añadido la posibilidad de cargar desde discos en systemd-fstab-generator y systemd-repart, donde solo hay una partición /usr y no hay partición raíz (la partición raíz será generada por la utilidad systemd-repart durante el primer arranque).
  • En systemd-nspawn, la opción «—private-user-chown» ha sido reemplazada por una variante más universal «—private-user-ownership», que puede aceptar valores «chown» como equivalente a «—private-user-chown», «off» para desactivar la configuración anterior, «map» para el mapeo de identificadores de usuario en los sistemas de archivos montados y «auto» para seleccionar «map» si la funcionalidad necesaria está presente en el núcleo (5.12+) o retroceder a la llamada recursiva «chown» en caso contrario. Mediante el mapeo, se pueden asignar archivos de un usuario en una partición montada de otro usuario en el sistema actual, lo que simplifica el uso compartido de archivos entre diferentes usuarios. En el mecanismo de directorios personales portátiles systemd-homed, el mapeo permitirá a los usuarios mover sus directorios personales a medios externos y usarlos en diferentes computadoras, donde la disposición de identificadores de usuario no coincide.
  • En systemd-nspawn, en la opción «—private-user» ahora se puede usar el valor «identity» para reflejar directamente los identificadores de usuario al configurar el espacio de nombres (user namespace), es decir, UID 0 y UID 1 en el contenedor se reflejarán en UID 0 y UID 1 del lado del host, para reducir los vectores de ataque (el contenedor solo tendrá las capacidades del proceso en su propio espacio de nombres).
  • Se ha añadido la opción «—bind-user» en systemd-nspawn para pasar al contenedor una cuenta de usuario presente en el entorno del host (se monta el directorio personal en el contenedor, se agrega una entrada de usuario/grupo y se realiza el mapeo de UID entre el contenedor y el entorno del host).
  • En systemd-ask-password y systemd-sysusers se ha añadido soporte para solicitar contraseñas establecidas (passwd.hashed-password. y passwd.plaintext-password.) mediante un nuevo mecanismo de transferencia segura de datos confidenciales utilizando archivos intermedios en un directorio separado, introducido en la versión 247 de systemd. Por defecto, las credenciales son aceptadas del proceso con PID1, que las obtiene, por ejemplo, del gestor de contenedores, lo que permite configurar la contraseña del usuario durante el primer arranque.
  • En systemd-firstboot se ha añadido soporte para utilizar el mecanismo de transferencia segura de datos confidenciales para solicitar varios parámetros del sistema, lo que puede aplicarse para inicializar configuraciones del sistema durante el primer arranque de una imagen de contenedor sin las configuraciones necesarias en el directorio /etc.
  • En el proceso PID 1 durante el arranque, se ha asegurado la visualización simultánea del nombre y la descripción de la unidad. La salida se puede modificar a través del parámetro 'StatusUnitFormat=combined' en system.conf o la opción de línea de comandos del núcleo 'systemd.status-unit-format=combined'.
  • En las utilidades systemd-machine-id-setup y systemd-repart se ha añadido la opción '--image' para pasar un archivo con el identificador de máquina en imágenes de disco o para aumentar el tamaño de la imagen del disco.
  • En el archivo de configuración de particiones utilizado por la utilidad systemd-repart se ha añadido el parámetro MakeDirectories, que se puede utilizar para crear directorios arbitrarios en el sistema de archivos creado antes de reflejar en la tabla de particiones (por ejemplo, para crear en la partición raíz directorios para puntos de montaje, de modo que se pueda montar de inmediato la partición en modo de solo lectura). Se han añadido parámetros relevantes Flags, ReadOnly y NoAuto para gestionar los flags GPT en las particiones creadas. En el parámetro CopyBlocks se ha implementado el valor 'auto' para seleccionar automáticamente la partición de arranque actual como fuente al copiar bloques (por ejemplo, cuando se necesita trasladar la partición raíz a un nuevo medio).
  • En GPT se ha implementado la bandera «grow-file-system», análoga a la opción de montaje x-systemd.growfs, que garantiza la expansión automática del tamaño del sistema de archivos hasta los límites del dispositivo de bloque, si el tamaño del sistema de archivos es menor que la partición. La bandera es aplicable a sistemas de archivos Ext3, XFS y Btrfs, y puede aplicarse a particiones detectadas automáticamente. La bandera se activa por defecto para las particiones escriturables disponibles, creadas automáticamente a través de systemd-repart. Se ha añadido la opción GrowFileSystem para configurar la bandera en systemd-repart.
  • En el archivo /etc/os-release se ha implementado el soporte de nuevas variables IMAGE_VERSION e IMAGE_ID para definir la versión y el identificador de las imágenes actualizables atómicamente. Se han propuesto los especificadores %M y %A para sustituir los valores indicados en diversos comandos.
  • Se ha añadido el parámetro «—extension» a la utilidad portablectl para activar imágenes portables de extensión del sistema (por ejemplo, a través de ellas se pueden distribuir imágenes con servicios adicionales integrados en la partición raíz).
  • En la utilidad systemd-coredump se ha asegurado la extracción de la información ELF build-id al formar el core-dump del proceso, lo cual puede ser útil para determinar a qué paquete pertenece el proceso fallido, si la información sobre el nombre y la versión de los paquetes deb o rpm ha sido incorporada en los archivos ELF.
  • En udev se ha añadido una nueva base de datos para dispositivos FireWire (IEEE 1394).
  • En udev se han introducido tres cambios en el esquema de selección de nombres de interfaces de red «net_id» que rompen la compatibilidad. Los caracteres no válidos en los nombres de las interfaces ahora se reemplazan por «_»; los nombres de los slots PCI hotplug para sistemas s390 se procesan en forma de números hexadecimales; se permite el uso de hasta 65535 dispositivos PCI integrados (anteriormente, los números superiores a 16383 estaban bloqueados).
  • En systemd-resolved se ha añadido el dominio «home.arpa» a la lista NTA (Negative Trust Anchors), recomendado para redes domésticas locales, pero no utilizándose en DNSSEC.
  • En el parámetro CPUAffinity se ha garantizado el parseo de especificadores «%».
  • En los archivos «.network» se ha añadido el parámetro ManageForeignRoutingPolicyRules, que se puede usar para excluir el procesamiento en systemd-networkd de políticas de enrutamiento externas.
  • En los archivos «.network» se ha añadido el parámetro RequiredFamilyForOnline para determinar la existencia de una dirección IPv4 o IPv6 como indicador de que la interfaz de red está en estado «online». En networkctl se ha asegurado la visualización del estado «online» para cada enlace.
  • Se ha añadido el parámetro OutgoingInterface a los archivos '.network' para definir las interfaces de salida al configurar puentes de red.
  • Se ha añadido el parámetro Group a los archivos '.network', lo que permite configurar un grupo Multipath para las entradas en la sección '[NextHop]'.
  • Se han añadido las opciones '-4' y '-6' a systemd-network-wait-online para limitar la espera de conexión solo a IPv4 o IPv6.
  • Se ha añadido el parámetro RelayTarget a la configuración del servidor DHCP, que pone al servidor en modo DHCP Relay. Se proponen las opciones RelayAgentCircuitId y RelayAgentRemoteId para una configuración adicional del relay DHCP.
  • Se ha añadido el parámetro ServerAddress al servidor DHCP, que permite establecer explícitamente la dirección IP del servidor (de lo contrario, la dirección se selecciona automáticamente).
  • Se ha implementado la sección [DHCPServerStaticLease] en el servidor DHCP, lo que permite configurar enlaces estáticos de direcciones (DHCP leases), especificando enlaces de IP fijas a direcciones MAC y viceversa.
  • En la configuración de RestrictAddressFamilies se ha implementado el soporte para el valor 'none', que indica que el servicio no tendrá acceso a sockets de ninguna familia de direcciones.
  • En los archivos '.network', en las secciones [Address], [DHCPv6PrefixDelegation] y [IPv6Prefix], se ha implementado el soporte para la configuración RouteMetric, lo que permite especificar la métrica para el prefijo de ruta creado para la dirección especificada.
  • En nss-myhostname y systemd-resolved se ha asegurado la síntesis de registros DNS con direcciones para hosts con el nombre especial '_outbound', para los cuales siempre se devuelve una IP local elegida de acuerdo con las rutas por defecto utilizadas para las conexiones salientes.
  • Se ha añadido una configuración activa por defecto RoutesToNTP en la sección '[DHCPv4]' de los archivos .network, que requiere la adición de una ruta separada a través de la interfaz de red actual para acceder a la dirección del servidor NTP, obtenida para esta interfaz mediante DHCP (de manera similar a DNS, la configuración garantiza que el tráfico al servidor NTP se dirija a través de la interfaz por la que se obtuvo esta dirección).
  • Se han añadido las configuraciones SocketBindAllow y SocketBindDeny para gestionar el acceso a los sockets vinculados al servicio actual.
  • Para los archivos unit se ha implementado la configuración condicional ConditionFirmware, que permite crear chequeos que evalúan las funciones del firmware, como el funcionamiento en sistemas UEFI y device.tree, así como verificar la compatibilidad con ciertas capacidades del device-tree.
  • Se implementó la opción ConditionOSRelease para verificar los campos en el archivo /etc/os-release. Al definir las condiciones de verificación de los valores de los campos, se permiten los operadores «=», «!=», «<», «=», «>».
  • En la utilidad hostnamectl, los comandos de tipo «get-xyz» y «set-xyz» han eliminado los prefijos «get» y «set», por ejemplo, en lugar de «hostnamectl get-hostname» y «hostnamectl set-hostname», se puede utilizar el comando «hostnamectl hostname», donde la asignación de valor se define indicando un argumento adicional («hostnamectl hostname value»). Se ha mantenido el soporte de comandos antiguos para garantizar la compatibilidad.
  • En la utilidad systemd-detect-virt y la configuración ConditionVirtualization, se garantiza una identificación correcta de los entornos de Amazon EC2.
  • La configuración LogLevelMax en los archivos de unidad ahora se aplica no solo a los mensajes de log generados por el servicio, sino también a los mensajes del proceso PID 1 que mencionan el servicio.
  • Se ha proporcionado la posibilidad de incluir datos SBAT (UEFI Secure Boot Advanced Targeting) en los archivos systemd-boot EFI PE.
  • En /etc/crypttab se han implementado nuevas opciones «headless» y «password-echo» — la primera permite omitir todas las operaciones relacionadas con la solicitud interactiva de contraseñas y PIN al usuario, y la segunda permite configurar el método de visualización de la entrada de la contraseña (no mostrar nada, mostrar caracter por caracter y mostrar asteriscos). En systemd-ask-password se ha añadido la opción «—echo» para fines similares.
  • En systemd-cryptenroll, systemd-cryptsetup y systemd-homed se amplió el soporte para desbloquear particiones encriptadas LUKS2 utilizando tokens FIDO2. Se añadieron nuevas opciones «—fido2-with-user-presence», «—fido2-with-user-verification» y «—fido2-with-client-pin» para gestionar la verificación de la presencia física del usuario, la verificación y la necesidad de introducir un PIN.
  • En systemd-journal-gatewayd se añadieron las opciones «—user», «—system», «—merge» y «—file», análogas a las mismas opciones de journalctl.
  • Además de las dependencias directas entre unidades, definidas a través de los parámetros OnFailure y Slice, se añadió soporte para dependencias implícitas inversas OnFailureOf y SliceOf, que pueden ser útiles, por ejemplo, para determinar todas las unidades que pertenecen a un slice.
  • Se añadieron nuevos tipos de dependencias entre unidades: OnSuccess y OnSuccessOf (opuestos a OnFailure, que se activan al completar con éxito); PropagatesStopTo y StopPropagatedFrom (que permiten propagar el evento de parada de una unidad a otra unidad); Upholds y UpheldBy (alternativa a Restart).
  • En la utilidad systemd-ask-password se ha añadido la opción «—emoji» para gestionar la aparición del símbolo de candado (🔐) en la línea de entrada de la contraseña.
  • Se ha añadido documentación sobre la estructura del árbol de textos fuente de systemd.
  • Para las unidades se ha añadido la propiedad MemoryAvailable, que muestra cuánta memoria le queda a la unidad antes de alcanzar el límite establecido a través de los parámetros MemoryMax, MemoryHigh o MemoryAvailable.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster