Ir para o conteúdo

Quando a causa é uma diretiva de endurecimento

Uma instalação endurecida por systemd exercita caminhos que a rota por container nunca percorre, e quando um deles falha a mensagem raramente nomeia a diretiva por trás. Esta página lista as falhas que de fato apareceram numa instalação endurecida bare metal, indexadas pelo que imprimem, para você reconhecer uma em vez de sair procurando no código.

Todas estão corrigidas. Cada entrada nomeia o teste que segura a correção, então ver o sintoma de novo aponta para uma regressão naquele comportamento específico, e não para a sua instalação. Qual é a postura esperada está em Endurecimento do host.

panic: config problem: mkdir /home/peart: permission denied

Impresso durante a geração de relatório, e levava junto a superfície interna inteira, que reiniciava e morria do mesmo jeito na tentativa seguinte.

Eram dois defeitos independentes empilhados. O passo de metadados do PDF pedia à sua toolchain um diretório de configuração sob $HOME; a conta de serviço não tem diretório pessoal e a unit carrega ProtectHome=yes, então o diretório não podia ser criado e a biblioteca entrava em panic. E o worker de relatório não tinha recuperação, então um panic num job encerrava o processo em vez daquele job.

Os dois estão consertados. O passo de metadados não encosta mais em $HOME, e um job que estoura agora falha sozinho enquanto a fila continua atendendo. Segurados por TestNormalizeMetadataWithoutAWritableHome, que aponta o HOME para um caminho que não pode ser criado, e por TestQueuePanicFailsOnlyItsOwnJob. Ver de novo significa regressão no primeiro deles.

chmod /var/lib/peart/work/<job>: operation not permitted

Impresso enquanto um job de relatório era preparado, antes de qualquer renderização.

RestrictSUIDSGID=yes nega, por seccomp, qualquer chmod cujo modo traga o bit setgid, e era exatamente assim que o diretório de job recebia o setgid. O conserto não foi afrouxar a diretiva. O renderizador deixou de escrever no diretório de job, o PDF passou a voltar pela mesma conexão que o pediu, e o diretório só precisa ser legível pelo grupo, que ele herda sem chmod nenhum.

Segurado por TestRendererWritesNothingInTheJobDirectory e por TestCheckDirShare, que recusa uma raiz de trabalho incapaz de entregar o próprio grupo. Ver de novo significa que alguém no código voltou a pedir setgid ao kernel.

O sidecar está inalcançável e a unit dele traz PrivateNetwork=yes

Menos uma mensagem do que um relatório que nunca renderiza enquanto o serviço parece saudável.

Com PrivateNetwork=yes o renderizador não tem rede própria, e só é alcançável porque o peart-render.socket abre 127.0.0.1:8090 no namespace do host e entrega o descritor. Se a unit de socket não estiver habilitada, ou se o serviço abrir um listener próprio em vez de herdar o que recebeu, não há a que se conectar. Verificar a instalação traz a conferência em três passos, e a linha do journal entrega o caso: o sidecar diz se está servindo num socket que recebeu ou num que ele mesmo abriu.

Segurado por TestSidecarServesOnTheSocketItWasHanded, que faz a entrega do jeito que o systemd faz, com o descritor 3 e o LISTEN_FDS.

Um relatório fica em "gerando" depois de um restart

A fila vive em memória e a linha do relatório vive no banco, e ninguém reconciliava as duas. Um relatório cujo job morreu junto com o processo ficava pendente para sempre, enquanto os relatórios novos geravam normalmente ao redor dele.

No arranque, todo relatório ainda pendente passa a ser marcado como falho, com uma razão dizendo que a geração foi interrompida e que ela pode ser refeita. Segurado por TestFailInterruptedReportsReconcilesTheOrphan, e a entrada de auditoria que ele grava, por TestMarkReportFailedAuditsTheFailure. Ver de novo significa que a reconciliação não rodou.

Uma falha que esta página não lista

Se você esbarrar numa que uma diretiva explique e esta página não nomeie, relate em vez de contornar. A postura é uma promessa, e um drop-in no seu host conserta a sua instalação e deixa o defeito de pé para todo mundo. Anote a mensagem exata, qual unit a imprimiu, e a diretiva de que você suspeita.