Após três meses de desenvolvimento, a versão do gerenciador de sistema systemd 259 está disponível. Mudanças principais: suporte à biblioteca padrão Musl, comando "run0 —empower" para executar ações privilegiadas sem mudar o UID, carregamento dinâmico de bibliotecas externas necessárias no libsystemd, ignorando arquivos de configuração adicionando ".ignore" ao nome.
Entre as mudanças na nova versão:
- Foi adicionada suporte parcial à biblioteca C padrão Musl, ativável definindo o valor "musl" nas opções "libc" no sistema de construção Meson. Como a biblioteca Musl não oferece funcionalidade NSS, ao construir systemd com Musl, os componentes nss-systemd, nss-resolve, systemd-homed, systemd-nsresourced, systemd-userdbd, assim como o parâmetro DynamicUser e a possibilidade de execução não privilegiada do systemd-nspawn não estarão disponíveis. Os desenvolvedores do systemd ainda não garantem que o suporte ao Musl se manterá em futuras versões. A decisão dependerá do sucesso do desenvolvimento da camada que implementa funcionalidades adicionais sobre o Musl, bem como da demanda do projeto e de relatos de erros específicos do Musl.
- A utilidade run0, apresentada como uma substituição segura do programa sudo, funcionando sobre o systemd-run, agora inclui a opção "—empower", que permite iniciar uma nova sessão com privilégios elevados, sem mudar para o usuário root. A execução de ações privilegiadas sem mudar o UID é organizada por meio da definição de flags de capabilities, como CAP_SYS_ADMIN, suficientes para acessar a maioria das chamadas de sistema privilegiadas. Os processos em execução também são colocados em um grupo separado "empower", que tem acesso à maioria das ações do Polkit.
- Foi decidido remover no próximo lançamento o suporte a scripts de serviços no formato System V. Componentes como systemd-sysv-install, systemd-rc-local-generator e systemd-sysv-generator estão programados para remoção. Na próxima versão, também está previsto o aumento dos requisitos para as versões mínimas: kernel Linux 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0, libxcrypt 4.4.0, util-linux 2.37, elfutils 0.177, cryptsetup 2.4.0, libseccomp 2.4.0.
- No âmbito da iniciativa de redução de dependências, o libsystemd implementou o carregamento dinâmico das bibliotecas libacl, libblkid, libseccomp, libselinux e libmount através da chamada dlopen() em situações em que suas funções são realmente necessárias. Através do dlopen() também é possível interagir com o subsistema de auditoria do Linux e com o PAM. Funcionalidade anteriormente chamada através da biblioteca de camada libcap agora está embutida no libsystemd.
- No systemd-resolved foi adicionada a capacidade de anexar manipuladores locais que são chamados a cada solicitação de resolução de nomes locais. Os manipuladores são colocados no diretório /run/systemd/resolve.hook/.
- Adicionado um campo UUID ao banco de dados de usuários, e a utilidade userdbctl ganhou a opção "--uuid" para busca por UUID.
- Garantido que arquivos de configuração com nomes que terminam em ".ignore" sejam ignorados.
- No systemd-importd foi implementada lógica interna para trabalhar com arquivos TAR, utilizando libarchive em vez de chamar a utilidade GNU tar. Foi possibilitada a execução do systemd-machined e do systemd-importd em vinculação com usuários, em vez de um nível de sistema, com o carregamento de imagens do sistema em ~/.local/state/machines/. Foram adicionadas opções "--user" e "--system" na utilidade importctl para escolha do modo de operação.
- O modo de armazenamento do log por padrão foi alterado de 'auto' para 'persistent' (anteriormente, o modo dependia da presença do diretório /var/log/journal).
- No systemd-networkd e systemd-nspawn, o suporte à criação de regras de tradução de endereços (NAT) através do iptables/libiptc foi descontinuado. Apenas o suporte ao nftables foi mantido.
- No systemd-boot e systemd-stub, o suporte ao TPM 1.2 foi descontinuado (mantido o suporte ao TPM 2.0).
- No systemd-machined, por padrão, é garantido o montagem de imagens de disco "ocultas", cujo nome começa com um ponto, em modo somente leitura.
- A API baseada no protocolo Varlink foi expandida, agora pode ser utilizada para acessar as configurações dos serviços. Chamadas IPC Reload() e Reexecute() foram implementadas. Chamadas foram adicionadas para acessar a funcionalidade e configurações do systemd-repart, systemd-resolved e systemd-networkd.
- Foi adicionada a configuração ExecReloadPost, permitindo a execução de comandos após a recarga da configuração do serviço.
- Para serviços foram implementadas as propriedades OOMKills e ManagedOOMKills, contendo o número de processos forçosamente finalizados pelo kernel ou pelo systemd-oomd devido à falta de memória.
- Para serviços temporários, foi adicionada a propriedade RootDirectoryFileDescriptor, que define o descritor de arquivo do diretório raiz.
- Adicionada a configuração UserNamespacePath, permitindo vincular a unidade ao espaço de identificadores de usuários (user namespace) através da indicação do caminho no pseudo-sistema de arquivos /proc, de forma semelhante às configurações IPCNamespacePath e NetworkNamespacePath. No systemd-nspawn, para indicar o espaço de nomes de rede, foi adicionada a configuração NamespacePath na seção [Network] dos arquivos .nspawn.
- No systemd-sysext e systemd-confext, foi implementado suporte para arquivos de configuração separados /etc/systemd/systemd-sysext.conf e /etc/systemd/systemd-confext.conf. Adicionada a possibilidade de usar a variável de ambiente SYSTEMD_SYSEXT_OVERLAYFS_MOUNT_OPTIONS e $SYSTEMD_CONFEXT_OVERLAYFS_MOUNT_OPTIONS para configurar as opções de montagem do Overlayfs.
- No systemd-udevd, foi adicionada a configuração OPTIONS="dump-json" para exibir o estado do evento atual no formato JSON. Na função net_id, foi implementada a geração de nomes previsíveis para interfaces de rede sem fio em sistemas com DeviceTree. Garantida a geração de links simbólicos /dev/gpio/by-id/... para dispositivos GPIO.
- No comando "homectl update", foi adicionada a possibilidade de usar a opção "--recovery-key" para adicionar chaves de backup a uma conta de usuário existente (anteriormente, chaves semelhantes podiam ser adicionadas apenas durante a criação do usuário).
- No systemd-homed, foram adicionadas as opções "--prompt-shell" e "--prompt-groups" para seleção interativa do shell e grupo durante a primeira inicialização utilizando o serviço systemd-homed-firstboot.service. No systemd-firstboot, foi adicionada a opção "--prompt-keymap-auto" para solicitar o layout do teclado ao trabalhar através do console local durante a primeira inicialização.
- No systemd-boot, foi adicionada a possibilidade de definir o nível de detalhamento dos logs através do parâmetro log-level em loader.conf ou no campo SMBIOS io.systemd.boot.loglevel.
- No systemd-networkd, para o servidor DHCP, foram adicionadas as opções EmitDomain e Domain, além de um manipulador para definir os nomes de host fornecidos via DHCP através da resolução DNS.
- No systemd-run, foi adicionada a opção "--root-directory" para iniciar um serviço no diretório raiz especificado. No systemd-run e run0, foi adicionada a opção "--same-root-dir" ("-R") para iniciar o serviço no mesmo diretório raiz que o chamador.
- No systemd-modules-load, foi implementada a paralelização do carregamento dos módulos do kernel.
- No systemd-integrity-setup, foi adicionada a compatibilidade com os algoritmos HMAC-SHA256, PHMAC-SHA256 e PHMAC-SHA512.
Fonte: opennet.ru
