Após cinco meses de desenvolvimento o lançamento do gerente de sistema . Entre as novidades, destaca-se a integração na PID 1 de um manipulador para a falta de memória no sistema, suporte para a anexação de programas BPF próprios para filtrar o tráfego dos units, inúmeras novas opções para o systemd-networkd, modo de monitoramento da largura de banda das interfaces de rede, uso padrão em sistemas de 64 bits de números PID de 22 bits em vez de 16 bits, transição para uma hierarquia unificada de cgroups, e inclusão no systemd-network-generator.
Principais mudanças:
- No manipulador da PID 1, foi adicionada a capacidade de reconhecimento dos sinais gerados pelo kernel sobre a falta de memória (Out-Of-Memory, OOM) para transferir units que atingiram o limite de consumo de memória para um estado especial, com a possibilidade opcional de encerramento ou parada forçada;
- Novos parâmetros IPIngressFilterPath e
IPEgressFilterPath foram implementados para permitir a ligação de programas BPF com manipuladores arbitrários para filtrar pacotes IP de entrada e saída gerados por processos associados a esse unit. As funcionalidades propostas permitem a criação de uma espécie de firewalls para serviços do systemd. um filtro de rede simples baseado em BPF; - A ferramenta systemctl recebeu o comando "clean" para remover cache, arquivos runtime, informações de estado e diretórios de logs;
- Foi adicionada ao systemd-networkd a suporte para interfaces de rede MACsec, nlmon, IPVTAP e Xfrm;
- No systemd-networkd, foi implementada a configuração separada das pilhas DHCPv4 e DHCPv6 através das seções "[DHCPv4]" e "[DHCPv6]" no arquivo de configuração. Uma nova opção RoutesToDNS foi adicionada para incluir uma rota separada para o servidor DNS, indicado nas opções recebidas do servidor DHCP (para que o tráfego para o DNS seja enviado pela mesma link que a rota principal recebida do DHCP). Novas opções para DHCPv4 foram adicionadas: MaxAttempts — número máximo de tentativas de aquisição de um endereço, BlackList — lista negra de servidores DHCP, SendRelease — habilitação do envio de mensagens DHCP RELEASE ao encerrar a sessão;
- Novos comandos foram adicionados à ferramenta systemd-analyze:
- "systemd-analyze timestamp" — análise e conversão de tempo;
- "systemd-analyze timespan" — análise e conversão de intervalos de tempo;
- "systemd-analyze condition" — análise e teste de expressões ConditionXYZ;
- "systemd-analyze exit-status" — análise e conversão de códigos de saída de números para nomes e vice-versa;
- «systemd-analyze unit-files» - saída de uma lista de todos os caminhos de arquivos para unidades e aliases de unidades.
- As opções SuccessExitStatus, RestartPreventExitStatus e
RestartForceExitStatus agora suportam não apenas códigos de retorno numéricos, mas também seus identificadores textuais (por exemplo, «DATAERR»). Para ver a lista de mapeamento dos códigos para os identificadores, use o comando «systemd-analyze exit-status»; - A utilidade networkctl agora inclui o comando «delete» para remover dispositivos de rede virtuais, além da opção «--stats» para exibir estatísticas sobre os dispositivos;
- Adicionadas as configurações SpeedMeter e SpeedMeterIntervalSec ao networkd.conf para medir periodicamente a largura de banda das interfaces de rede. As estatísticas resultantes podem ser visualizadas na saída do comando ‘networkctl status’;
- Adicionada uma nova utilidade systemd-network-generator para gerar arquivos
.network, .netdev e .link com base nas configurações de IP fornecidas na linha de comando do kernel Linux, no formato de configuração Dracut; - O valor sysctl «kernel.pid_max» em sistemas de 64 bits agora é configurado por padrão para 4194304 (PIDs de 22 bits em vez de 16 bits), o que reduz a probabilidade de colisões ao atribuir PIDs, aumenta o limite do número de processos executados simultaneamente e melhora a segurança. Potencialmente, essa mudança pode causar problemas de compatibilidade, mas, na prática, não houve relatos de tais problemas até agora;
- Por padrão, na fase de compilação, foi feita a transição para uma hierarquia unificada cgroups-v2 («-Ddefault-hierarchy=unified»). Anteriormente, a configuração padrão era o modo híbrido («-Ddefault-hierarchy=hybrid»);
- O comportamento do filtro de chamadas de sistema (SystemCallFilter) foi alterado, de modo que, ao acessar uma chamada de sistema proibida, agora encerra todo o processo, e não apenas threads individuais, pois o encerramento de threads individuais poderia causar problemas imprevisíveis. As mudanças só se aplicam se o kernel Linux for 4.14+ e libseccomp 2.4.0+;
- Programas não privilegiados agora têm a capacidade de enviar pacotes ICMP Echo (ping) graças à configuração sysctl «net.ipv4.ping_group_range» para todo o intervalo de grupos (para todos os processos);
- Para acelerar o processo de compilação, a geração de manuais foi desativada por padrão (para compilar a documentação completa, use a opção "-Dman=true" ou "-Dhtml=true" para manuais no formato html). Para facilitar a visualização da documentação, foram incluídos dois scripts em build/man/man e build/man/html para geração e visualização dos manuais desejados;
- Para o processamento de nomes de domínio com símbolos de alfabetos nacionais, a biblioteca libidn2 está ativada por padrão (para retornar ao libidn, use a opção "-Dlibidn=true");
- O suporte ao executável /usr/sbin/halt.local foi interrompido, pois sua funcionalidade não teve ampla adoção nas distribuições. Para organizar a execução de comandos ao desligar, é recomendável usar scripts em /usr/lib/systemd/system-shutdown/ ou definir uma nova unidade dependente do final.target;
- Na última fase de desligamento, o systemd agora aumenta automaticamente o nível de logs em sysctl "kernel.printk", resolvendo o problema de exibição nos logs de eventos que ocorreram nas fases finais de desligamento, quando os demônios de log já foram encerrados;
- No journalctl e outras ferramentas que exibem logs, os avisos são destacados em amarelo e os registros de auditoria em azul para sua visualização distinta;
- Na variável de ambiente $PATH, o caminho para bin/ agora vem antes do caminho para sbin/, ou seja, se arquivos executáveis com o mesmo nome existem em ambos os diretórios, será executado o arquivo de bin/;
- No systemd-logind, foi adicionado o chamado SetBrightness() para alterar com segurança o brilho da tela para cada sessão;
- Um novo sinalizador "—wait-for-initialization" foi adicionado ao comando "udevadm info" para aguardar a conclusão da inicialização do dispositivo;
- Durante o processo de inicialização do sistema, o manipulador PID 1 agora exibe os nomes das unidades na tela, em vez da linha com suas descrições. Para retornar ao comportamento anterior, é possível usar a opção StatusUnitFormat em /etc/systemd/system.conf ou o parâmetro do núcleo systemd.status_unit_format;
- Em /etc/systemd/system.conf, foi adicionada a opção KExecWatchdogSec para o watchdog no PID 1, que define o tempo limite para reinicialização usando kexec. A configuração antiga
ShutdownWatchdogSec foi renomeada para RebootWatchdogSec e define o tempo limite para operações durante o desligamento ou reinicialização normal; - Uma nova opção foi adicionada para serviços, , permitindo definir comandos que serão executados antes do ExecStartPre. Com base no código de erro retornado pelo comando, decide-se sobre a execução subsequente da unidade — se o código 0 for retornado, a inicialização da unidade continua; se for de 1 a 254, a execução é encerrada silenciosamente sem marcar falha; se for 255, é encerrada com marcação de falha;
- Adicionado um novo serviço systemd-pstore.service para extrair dados de sys/fs/pstore/ e salvá-los em /var/lib/pstore para análise posterior;
- Novos comandos foram adicionados ao utilitário timedatectl para configurar os parâmetros NTP para systemd-timesyncd relacionados às interfaces de rede;
- O comando 'localectl list-locales' parou de exibir localizações que não sejam UTF-8;
- Foi garantido que erros na atribuição de variáveis em arquivos sysctl.d/ sejam ignorados se o nome da variável começar com o caractere '-';
- Serviço agora é totalmente responsável pela inicialização do pool de entropia do gerador de números pseudorrandômicos do núcleo Linux. Os serviços que requerem um /dev/urandom corretamente inicializado devem ser iniciados após o systemd-random-seed.service;
- No carregador systemd-boot, foi adicionada a possibilidade opcional de manter com uma sequência aleatória na partição EFI System Partition (ESP);
- Novos comandos foram adicionados ao utilitário bootctl: 'bootctl random-seed' para gerar um arquivo seed no ESP e 'bootctl is-installed' para verificar a instalação do carregador systemd-boot. No bootctl, também foram implementados avisos sobre a configuração incorreta de registros de inicialização (por exemplo, quando a imagem do núcleo foi excluída, mas o registro para inicializá-la foi mantido);
- Foi garantida a seleção automática da partição de swap ao colocar o sistema em modo de suspensão. A partição é escolhida com base na prioridade configurada, e em caso de prioridades iguais, no tamanho do espaço livre;
- Na /etc/crypttab, adicionada a opção keyfile-timeout para definir o tempo de espera do dispositivo com a chave de criptografia antes de solicitar a senha para acessar a partição criptografada;
- Adicionada a opção IOWeight para definir o peso de entrada/saída para o escalonador BFQ;
- No systemd-resolved, foi adicionado um modo estrito ('strict') para DNS-over-TLS e implementada a possibilidade de cache apenas de respostas DNS positivas ('Cache no-negative' em resolved.conf);
- Para o VXLAN no systemd-networkd, foi adicionada a opção GenericProtocolExtension para habilitar extensões do protocolo VXLAN. Para VXLAN e GENEVE, foi adicionada a opção IPDoNotFragment para definir a flag que proíbe a fragmentação de pacotes de saída;
- No systemd-networkd, na seção '[Route]', surgiu a opção FastOpenNoCookie para habilitar o mecanismo de abertura rápida de conexões TCP (TFO — TCP Fast Open, RFC 7413) ligado a rotas específicas, assim como a opção TTLPropagate para configurar o LSP (Label Switched Path) TTL. Na opção 'Type', foi adicionada a compatibilidade com modos de roteamento local, broadcast, anycast, multicast, any e xresolve;
- No systemd-networkd, na seção '[Network]', foi proposta a opção DefaultRouteOnDevice para configurar automaticamente a rota padrão para um dispositivo de rede especificado;
- No systemd-networkd, para pontes de rede, foram adicionadas as opções ProxyARP e
ProxyARPWifi para configurar o comportamento do proxy ARP, MulticastRouter para definir parâmetros de roteamento no modo multicast, MulticastIGMPVersion para alterar a versão do IGMP (Internet Group Management Protocol) para multicast; - No systemd-networkd, para túneis FooOverUDP, foram adicionadas as opções Local, Peer e PeerPort para configurar os endereços IP das extremidades local e remota, assim como o número da porta de rede. Para túneis TUN, foi adicionada a opção VnetHeader para configurar o suporte ao GSO (Generic Segment Offload);
- No systemd-networkd, nos arquivos .network e .link, na seção [Match], surgiu a opção Property, que permite identificar dispositivos com base em propriedades específicas deles no udev;
- No systemd-networkd, para túneis, foi adicionada a opção AssignToLoopback, que controla a ligação da extremidade do túnel ao dispositivo loopback 'lo';
- No systemd-networkd, a ativação do stack IPv6 foi automatizada em caso de bloqueio via sysctl disable_ipv6 — o IPv6 é ativado se configurações de IPv6 (estáticas ou DHCPv6) forem definidas para a interface de rede; caso contrário, o valor já definido em sysctl não é alterado;
- Nos arquivos .network, a configuração CriticalConnection foi substituída pela opção KeepConfiguration, que oferece mais recursos para definir situações ('yes', 'static', 'dhcp-on-stop', 'dhcp') nas quais o systemd-networkd não deve modificar conexões já existentes durante a inicialização;
- Corrigida vulnerabilidade , causada pela falta de controle de acesso à interface D-Bus do systemd-resolved. O problema permite que um usuário não privilegiado execute operações disponíveis apenas para administradores, como modificar configurações de DNS e redirecionar solicitações DNS para um servidor de ataque;
- Corrigida vulnerabilidade , relacionada à desativação do pam_systemd para sessões não interativas, que permite organizar o spoofing de sessões ativas.
Fonte: opennet.ru
