systemd 259: Suporte a Musl, run0 empower e adeus ao System V

Pontos chave:
  • Suporte parcial para a biblioteca libc Musl (requer configuração manual no Meson).
  • O comando `run0 --empower` permite ações privilegiadas sem alterar o UID do usuário.
  • Confirmação da descontinuação dos scripts do System V e aumento dos requisitos (Kernel 5.10+).
  • Agora, o libsystemd carrega bibliotecas externas usando dlopen() para reduzir as dependências.
  • O armazenamento em diário agora é 'persistente' por padrão.

sistema

Após pouco mais de três meses de desenvolvimento, o lançamento de a nova versão de sistema 259. Esta atualização introduz alterações na arquitetura do sistema, destacando a abertura a bibliotecas padrão alternativas, uma gestão de privilégios mais rigorosa e requisitos técnicos mais estritos para versões futuras.

Um dos movimentos mais comentados neste ciclo é a transição para uma maior modularidade e a eliminação de dependências legadas, abrindo caminho para um ecossistema Linux que está definitivamente se afastando dos padrões das décadas passadas.

Principais novos recursos do systemd 259

A nova versão 259 do systemd se destaca por ser a Primeira versão a adicionar compatibilidade parcial com Musl, a popular biblioteca padrão C em distribuições leves e ambientes embarcados. Esta integração Isso é gerenciado através da opção libc no sistema de compilação Meson. No entanto, como o Musl não implementa a funcionalidade NSS (Name Service Switch), vários componentes do systemd permanecem desativados nessa configuração.

Entre os aausências notáveis ​​ao compilar com Musl encontrado nss-systemd, nss-resolve, systemd-homed, systemd-userdbd e o parâmetro DynamicUserAlém disso, não é possível executar o systemd-nspawn sem privilégios nesta biblioteca. Os desenvolvedores alertaram que a manutenção desse suporte em versões futuras dependerá da demanda da comunidade e da estabilidade de quaisquer camadas de compatibilidade adicionais que forem desenvolvidas.

Outra novidade da nova versão é no utilitário run0, projetado como uma alternativa moderna e segura ao sudo, que recebeu a nova opção – capacitar. Esta função Permite que você faça login com privilégios elevados. sem precisar alterar o identificador de usuário (UID) para root.

Além disso, em vez de delegar o controle total Por meio da troca de usuários, o parâmetro –empower utiliza indicadores de capacidade do kernel, como CAP_SYS_ADMIN. conceder as autorizações estritamente necessárias para fazer chamadas de sistema privilegiadas. Além disso, os processos resultantes são integrados a um grupo específico que lhes concede acesso às ações do Polkit, mantendo uma separação de privilégios mais robusta do que o modelo sudo tradicional.

O fim de uma era: Adeus ao System V e aos novos requisitos

systemd 259 marca o início do fim para compatibilidade com o Scripts de serviço do System VFoi anunciado que, na próxima versão, componentes legados como systemd-sysv-generator, systemd-rc-local-generator e systemd-sysv-install serão removidos permanentemente.

Juntamente com essa limpeza de código antigo, os requisitos mínimos de software para o ecossistema systemd foram significativamente elevados:

  • Kernel do Linux: Versão mínima 5.10.
  • Glibc: 2.34.
  • OpenSSL: 3.0.0.
  • Util-linux: 2.37.
  • Outros: Python 3.9.0, cryptsetup 2.4.0 e libseccomp 2.4.0.

Modularidade e carregamento dinâmico em libsystemd

Como parte de uma iniciativa para reduzir dependências direto na inicialização, libsystemd agora usa carregamento dinâmico via dlopen() Para bibliotecas como libacl, libblkid, libseccomp, libselinux e libmount, o sistema carregará essas bibliotecas na memória somente quando suas funções específicas forem necessárias para um processo, otimizando o uso de recursos. Além disso, a funcionalidade do libcap foi integrada diretamente ao libsystemd, simplificando a cadeia de dependências.

El O tratamento de logs teve sua configuração padrão alterada: o modo de armazenamento do diário (Blog) mudanças de "automático" para "persistente", independentemente de o diretório /var/log/journal já existir anteriormente.

Na área de redes e virtualização:

  • systemd-networkd e systemd-nspawn: O suporte para regras NAT usando iptables foi removido, deixando o nftables como a única opção compatível.
  • systemd-resolvido: Agora é possível usar hooks locais (hooks) em /run/systemd/resolve.hook/ para intervir em solicitações de resolução de nomes.
  • systemd-importado: A lógica para trabalhar com arquivos TAR foi integrada nativamente. Além disso, tanto o `importd` quanto o `machined` agora podem ser executados no nível do usuário, permitindo o gerenciamento de imagens no diretório local do usuário (`~/.local/state/machines/`).

Outras inovações

A API baseada em protocolo A Varlink recebeu melhorias que permitem o acesso às configurações do serviço e a realização de chamadas IPC. tais como Reload() e Reexecute(). Para administradores de sistema, a inclusão da propriedade OOMKills nos serviços será muito útil, pois permitirá rastrear quantas vezes um processo foi encerrado por falta de memória diretamente das ferramentas do systemd.

Finalmente, o processo de inicialização do sistema torna-se mais moderno com a remoção do suporte ao TPM 1.2 no systemd-boot, concentrando todos os esforços de segurança no padrão TPM 2.0.

Se estiver interessado em saber mais sobre o assunto, pode consultar o detalhes no link a seguir.