CLI AI

Conferir um download: sha256sum -c e depois a assinatura

2026-07-30

sha256sum -c SHA256SUMS confere todos os arquivos listados no arquivo de somas e imprime OK ou FAILED para cada um — sem comparar cadeias hexadecimais no olho. Isso prova que o download chegou inteiro. Não prova que a versão é legítima: para isso se confere a assinatura do próprio arquivo de somas.

1. Confira tudo que você baixou

clai
$ clai confira as somas dos arquivos baixados→ sha256sum -c SHA256SUMSapp-1.2.0-darwin-arm64.tar.gz: OKapp-1.2.0-linux-amd64.tar.gz: OKapp-1.2.0-linux-arm64.tar.gz: OK

SHA256SUMS é um arquivo de texto com linhas de "hash, dois espaços, nome" que os projetos publicam junto do release. O -c faz a comparação sozinho, que é justamente o objetivo.

2. Você baixou só um dos arquivos

clai
$ clai confira só o arquivo que eu tenho→ sha256sum -c --ignore-missing SHA256SUMSapp-1.2.0-linux-amd64.tar.gz: OK

Sem --ignore-missing a conferência reclama de cada arquivo ausente com FAILED open or read e sai com 1, mesmo com o seu arquivo perfeito. É o motivo mais comum de alguém achar que a verificação falhou.

3. Como é uma falha de verdade

clai
$ clai confira o arquivo depois de um download interrompido→ sha256sum -c --ignore-missing SHA256SUMSapp-1.2.0-linux-amd64.tar.gz: FAILEDsha256sum: WARNING: 1 computed checksum did NOT matchsha256sum: SHA256SUMS: no file was verified

Verificado trocando um único byte do arquivo. O código de saída é 1, e é nele que um script deve olhar. FAILED significa "arquivo errado"; FAILED open or read significa "não há arquivo" — problemas diferentes.

4. Um hash só, sem arquivo de somas

clai
$ clai compare o arquivo com o hash da página de download→ echo "<hash>  app-1.2.0-linux-arm64.tar.gz" | sha256sum -c -app-1.2.0-linux-arm64.tar.gz: OK

Os dois espaços entre hash e nome fazem parte do formato, não é tipografia. É assim que se confere quando o site publica um hash avulso em vez do arquivo de somas.

5. A assinatura vale mais que o hash

clai
$ clai confira a assinatura do arquivo de somas→ gpg --verify SHA256SUMS.asc SHA256SUMSgpg: Signature made Thu Aug 27 23:09:38 2026 +07gpg:                using EDDSA key CDDC16ABE7FBF699F0CA9D6C7CA6166B006AB9B0gpg: Good signature from "App Releases <[email protected]>" [ultimate]

É a parte que quase todo guia pula. O hash prova que os bytes chegaram inteiros, não que o release veio do autor: quem trocar o pacote e o SHA256SUMS junto consegue hashes que batem. A assinatura não sobrevive a isso — mude um caractere no arquivo de somas e o gpg responde BAD signature from "App Releases <releases@example.com>", testado.

6. Quando você não tem a chave

clai
$ clai confira a assinatura sem a chave do projeto→ gpg --verify SHA256SUMS.asc SHA256SUMSgpg: Signature made Thu Aug 27 23:09:38 2026 +07gpg:                using EDDSA key CDDC16ABE7FBF699F0CA9D6C7CA6166B006AB9B0gpg: Can't check signature: No public key

Isso não é "assinatura ruim", é "não tenho com o que conferir". Pegue a chave com gpg --recv-keys <fingerprint> — e tire o fingerprint de outro lugar que não a página do download, senão a verificação está conferindo a si mesma.

Gotchas

  • FAILED e FAILED open or read são problemas diferentes. O primeiro diz que o arquivo está corrompido ou trocado; o segundo, que ele não está no diretório. O --ignore-missing resolve só o segundo.
  • Hash batendo não é autenticidade. Hashes protegem contra download truncado, não contra release substituído. Autenticidade exige arquivo de somas assinado e uma chave obtida fora da página de download.
  • O formato da linha é rígido. Exatamente dois espaços entre hash e nome; um espaço ou uma tabulação rende no properly formatted checksum lines found.

Related questions

Qual a diferença entre sha256sum e md5sum? O algoritmo. O MD5 está quebrado para colisões há anos, então não serve para autenticidade; ainda detecta download corrompido, mas não há motivo para preferi-lo.

Como confiro um hash no Windows? certutil -hashfile app.tar.gz SHA256 no cmd, ou Get-FileHash no PowerShell. Formatação diferente, mesmo valor.

E se as somas não baterem? Baixe de novo — normalmente foi transferência cortada. Se falhar duas vezes, troque de espelho e confira a assinatura antes de confiar em qualquer coisa.

See also

O CliAI escreve a linha de verificação — inclusive a flag para o caso de um arquivo só — e mostra antes de rodar. Instale em uma linha.