Lançamento do gerenciador de sistema systemd 257

Após seis meses de desenvolvimento, o lançamento do gerenciador de sistemas systemd 257 foi apresentado. As principais mudanças incluem: novas utilidades systemd-sbsign e systemd-keyutil, suporte a MPTCP quando ativado por socket, suporte inicial para compilação com a biblioteca C Musl, a utilidade updatectl para gerenciar a instalação de atualizações através do systemd-sysupdate, capacidade de iniciar serviços em namespaces PID separados, e proteção contra a exclusão acidental de arquivos ao usar "systemd-tmpfiles --purge".

Entre as mudanças na nova versão:

  • Uma nova utilidade, systemd-sbsign, foi adicionada para assinar digitalmente arquivos executáveis no formato PE (Portable Executable), destinados ao uso durante a inicialização no modo EFI Secure Boot. Para formar a assinatura, pode-se utilizar motores e provedores fornecidos pela biblioteca OpenSSL. O systemd-sbsign pode ser usado como uma alternativa a aplicativos como sbsigntool e pesign na utilidade ukify ao criar imagens de núcleo unificadas UKI (Unified Kernel Image), que combinam em um único arquivo o carregador para UEFI (UEFI boot stub), a imagem do núcleo Linux e o ambiente de sistema initrd carregado na memória.
  • Foi adicionada uma nova utilidade, systemd-keyutil, que implementa várias operações sobre chaves privadas e certificados X.509. Por exemplo, o systemd-keyutil pode ser usado para verificar a capacidade de carregar chaves privadas e certificados, bem como para extrair deles chaves públicas no formato PEM.
  • Nos units '.socket', usados para garantir o funcionamento do mecanismo de ativação por socket (iniciando processos ao tentar estabelecer uma conexão de rede), foi implementado o suporte a MPTCP (Multipath TCP), uma extensão do protocolo TCP para organizar uma conexão TCP com entrega de pacotes simultaneamente por vários caminhos através de diferentes interfaces de rede ligadas a diferentes. endereços IP.
  • Incluídas estão mudanças necessárias para a compilação utilizando a biblioteca padrão C Musl.
  • Vários componentes do systemd, que exibem indicadores de progresso durante a execução de operações (por exemplo, systemd-repart, systemd-sysupdate/updatectl e importctl), ganharam a capacidade de usar sequências ANSI para animar a exibição de progresso. Estas sequências atualmente são suportadas apenas no Windows Terminal (espera-se que no futuro esta capacidade seja transferida também para emuladores de terminal no Linux).
  • As capacidades do componente systemd-sysupdate foram expandidas, permitindo a detecção automática, download e instalação de atualizações utilizando um mecanismo atômico de substituição de partições, arquivos ou diretórios (utilizando duas partições/arquivos/diretórios independentes, onde um contém o recurso atualmente em execução e o outro instala a atualização, após o que as partições/arquivos/diretórios são trocados de lugar). Na prática, o systemd-sysupdate já está sendo aplicado no GNOME OS.

    Além do processo systemd-sysupdate, foi adicionado um serviço homônimo que permite o uso do D-Bus para gerenciar a atualização do sistema por um usuário não privilegiado. Para gerenciar o serviço, também foi incluída uma nova ferramenta chamada updatectl. O systemd-sysupdate agora possui a opção "--offline" para proibir o download de metadados pela rede, utilizando apenas as versões já baixadas para o sistema local. Para todos os comandos, foi adicionada suporte para saída no formato JSON.

  • Para os serviços, foi implementada uma nova propriedade "PrivatePIDs", que permite organizar a execução de processos com PID 1 (processo init) em um espaço de identificadores de processos (PID namespace) separado. No ambiente criado para o processo em execução, apenas os processos desse espaço de nomes criado serão visíveis.
  • No conjunto de regras do udev, foi adicionada a compatibilidade com correspondências que não diferenciam maiúsculas de minúsculas (por exemplo, 'ATTR{foo}==i"abcd"'). Através do udev, foi implementado o fornecimento de acesso ('uaccess') a usuários locais não privilegiados ao dispositivo /dev/udmabuf, necessário para trabalhar com câmeras IPMI através do libcamera. O udev foi aprimorado para reconhecer diversas carteiras de hardware com interface USB e atribuir a elas a propriedade ID_HARDWARE_WALLET, permitindo aplicar o modo 'uaccess' para acesso de usuários não privilegiados.
  • Novos campos RELEASE_TYPE, EXPERIMENT e EXPERIMENT_URL foram adicionados ao arquivo /etc/os-release. "RELEASE_TYPE" pode ter valores como "experimental", "development", "stable" e "lts" para separar versões estáveis de versões em desenvolvimento e compilações experimentais. Os parâmetros EXPERIMENT e EXPERIMENT_URL são destinados a esclarecer a natureza da compilação experimental.
  • Na ferramenta run0, desenvolvida como substituta do programa sudo, foi adicionada a opção "—shell-prompt-prefix", que define a string de prefixo do prompt de comando. Por padrão, usa-se o emoji "🦸" como prefixo para destacar visualmente a sessão com privilégios elevados.
  • No systemd-tmpfiles, para evitar a exclusão acidental de arquivos, a opção "—purge" agora só é aplicada às configurações em tmpfiles.d/, para as quais o flag "$" foi explicitamente definido. Para executar a operação "—purge", também é necessário especificar pelo menos um arquivo do diretório tmpfiles.d/. Para linhas do tipo ‘L’, foi adicionado o flag ‘?’, que, ao ser especificado, criará um link simbólico apenas se o arquivo de destino existir.
  • No gerenciador de serviços e nas ferramentas associadas, o código de rastreamento de processos continuou sua migração para o uso de PIDFD em vez de PID. O identificador PIDFD está vinculado a um processo específico e não muda, enquanto o PID pode ser associado a outro processo após a conclusão do processo atual vinculado a este PID.
  • Para os serviços, foi implementada a possibilidade de especificar no parâmetro "RestartMode" o valor "debug", onde o reinício de um serviço com falha será executado com o modo de depuração ativado (a variável de ambiente DEBUG_INVOCATION=1 é configurada), e o valor LogLevelMax será temporariamente elevado ao nível de depuração.
  • No manipulador PID 1, foi implementada a possibilidade de carregar regras para o módulo LSM IPE (Integrity Policy Enforcement), que definem a política de integridade para todo o sistema (quais operações são permitidas e de que forma a autenticidade dos componentes deve ser verificada).
  • Nos arquivos unitários " .timer" foi adicionada a opção "DeferReactivation", que permite pular a ativação agendada por timer se o serviço ainda não tiver terminado sua execução desde a última ativação.
  • No parâmetro dos arquivos unitários PrivateUsers, foi implementada a possibilidade de especificar o valor "identity" para habilitar o mapeamento de identificadores de usuários ao criar o espaço de nomes (user namespace).
  • No parâmetro dos arquivos unitários PrivateTmp, foi adicionada a suporte ao valor "disconnected", onde diretórios /tmp/ e /var/tmp/ usarão instâncias separadas de tmpfs.
  • O parâmetro unit-files ProtectControlGroups agora suporta os novos modos "private" e "strict", onde uma nova namespace cgroup (cgroup namespace) é criada para o serviço e o cgroupfs é montado. Quando a opção "strict" é definida, o cgroupfs é montado em modo somente leitura.
  • Nos parâmetros StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory e ConfigurationDirectory, agora é possível usar a flag ‘:ro’ para restringir o acesso aos diretórios relevantes no modo somente leitura.
  • Foi adicionada ao parâmetro da linha de comando do kernel "systemd.machine_id" a nova opção de valor "firmware", onde o identificador do sistema (machine ID) é calculado com base no UUID do SMBIOS/DeviceTree.
  • Adicionada suporte a chamadas de sistema mseal(), listmount() e statmount(), introduzidas nas versões mais recentes do kernel Linux.
  • Nas utilitários resolvectl, timedatectl e systemd-inhibit, foi adicionada a opção de autorização interativa através do Polkit.
  • Na utilidade systemctl, foi adicionada a possibilidade de usar a flag "—now" no comando "reenable".
  • Na utilidade systemd-mount, foi adicionada a opção "—json" para saída no formato JSON (por exemplo, ao ser usada junto com "—list-devices", será exibida uma lista de dispositivos em formato JSON).
  • Na utilidade "localectl", foram adicionadas as opções "-l" e "—full" para desativar o truncamento de linhas longas na saída.
  • No sleep.conf, foi adicionada a opção HibernateOnACPower que permite adiar a transição para o modo de suspensão até que o dispositivo seja desconectado da fonte de energia principal.
  • No systemd-sysusers, nas strings "u", foi adicionada suporte ao modificador "!", que permite a criação de contas de usuário totalmente bloqueadas (anteriormente, para bloquear um usuário, era necessário definir uma senha inválida, o que, por exemplo, não resultava em bloqueio durante a autenticação por chaves no SSH).
  • Na systemd-coredump, foi adicionada a opção "EnterNamespace", que fornece acesso ao espaço de pontos de montagem de qualquer processo que tenha encerrado anormalmente para obter seus símbolos de depuração. Na prática, a opção pode ser útil para organizar a retrotracing (backtrace) de arquivos core de aplicativos executados em contêineres isolados.
  • No systemd-logind está ativado o processamento da combinação Ctrl-Alt-Shift-Esc para enviar aos componentes do ambiente de usuário o sinal org.freedesktop.login1.SecureAttentionKey, solicitando a exibição do diálogo de login seguro. Foi implementada a configuração "DesignatedMaintenanceTime" para agendar automaticamente o desligamento em um horário definido. De forma semelhante ao suporte para dispositivos DRM e evdev, foi adicionada a opção de configuração para que usuários não privilegiados acessem dispositivos hidraw (controladores de jogos e joysticks).
  • No systemd-machined, foi adicionada a suporte para registro por clientes não privilegiados máquinas virtuais e contêineres. O acesso à funcionalidade do systemd-machined é fornecido através da API Varlink, além do D-Bus.
  • No arquivo de configuração networkd.conf, foi adicionada uma nova seção "[IPv6AddressLabel]" para configurar rótulos e prefixos para endereços IPv6.
  • O comando 'networkctl edit' ganhou uma opção "—stdin" para obter o conteúdo do arquivo a partir da entrada padrão. Nos comandos 'networkctl edit' e 'networkctl cat', foi adicionado suporte para edição e exibição de arquivos .netdev através da especificação da interface de rede. Foi adicionada a opção "—no-ask-password" para desativar a autorização interativa.
  • Nas utilidades ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart e systemd-sbsign, foi adicionada a opção "—certificate-source" para carregar um certificado X.509 através do provedor OpenSSL, em vez de carregar diretamente de um arquivo.
  • No systemd-boot, foi adicionada a possibilidade de usar os botões de controle de volume para navegar para cima e para baixo no menu de inicialização, o que pode ser útil em dispositivos como smartphones. Na utilidade bootctl, foi adicionado suporte para instalar o banco de dados UEFI Secure Boot no formato ESL(db/dbx/…) para o systemd-boot.
  • No journalctl, foi adicionada a opção "—list-invocation" para mostrar a lista de convocações de unidades e a opção "—invocation" ("-I") para mostrar logs relacionados apenas a uma convocação específica.
  • No systemd-nspawn, foi adicionado suporte para uso não privilegiado do FUSE (Filesystem in Userspace) em contêineres. Ao usar a opção "—bind-user", é garantido o encaminhamento das chaves SSH do usuário para o contêiner, necessárias para acesso via SSH.
  • Na libsystemd, foi adicionado uma nova interface de programação "sd-json", que utiliza o formato JSON, assim como a interface "sd-varlink", que utiliza IPC Varlink.
  • A versão base recomendada do núcleo foi atualizada para a versão 5.4, lançada em 2019. No próximo ano, planeja-se encerrar o suporte para núcleos mais antigos e marcar a versão 5.4 como a versão base mínima suportada.
  • O suporte a cgroups v1 foi considerado obsoleto e está desativado por padrão (para ativá-lo na linha de comando do núcleo, é necessário especificar SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1, além de ativá-lo nas configurações do systemd). No próximo lançamento do systemd 258, está previsto remover completamente o código relacionado aos cgroups v1. A versão systemd 258 também deve eliminar o suporte para scripts de serviço System V.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster