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 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 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 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 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 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 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
FAILEDeFAILED open or readsã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-missingresolve 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
- Retomar um download interrompido com curl
- Dividir um arquivo grande em partes e juntar de volta
- Extrair qualquer arquivo compactado
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.