Table of Contents

Guia: Obtendo Hashes de Arquivos no Linux usando Ferramentas Integradas

Introdução

No mundo dos sistemas Linux, obter hashes de arquivos é essencial para garantir a integridade dos dados e verificar a autenticidade dos arquivos. Hashes de arquivos servem como identificadores únicos que permitem aos usuários detectar tentativas de adulteração e validar a integridade dos dados. Neste guia abrangente, exploraremos como obter hashes SHA256, MD5 e SHA1 de arquivos no Linux usando ferramentas integradas. Siga as instruções passo a passo e aprenda por meio de exemplos específicos.


Obtendo Hashes no Linux usando Ferramentas Integradas

O Linux oferece várias ferramentas integradas que permitem aos usuários calcular hashes de arquivos sem a necessidade de instalar softwares adicionais. Exploraremos três algoritmos de hashing amplamente usados: SHA256, MD5 e SHA1.

Obtendo o Hash SHA256

Para obter o hash SHA256 de um arquivo no Linux, você pode usar o comando sha256sum. Abra um terminal e navegue até o diretório onde o arquivo está localizado. Em seguida, execute o seguinte comando:

sha256sum file_path

Substitua file_path pelo caminho real do seu arquivo.

Obtendo os Hashes MD5 e SHA1

Você também pode obter os hashes MD5 e SHA1 hashes de um arquivo no Linux usando comandos similares:

  • Para obter o MD5 hash:
md5sum file_path
  • Para obter o SHA1 hash:
sha1sum file_path

Substitua file_path pelo caminho do seu arquivo em ambos os comandos.

Exemplos

Vamos analisar exemplos específicos para ilustrar o processo de obtenção de hashes usando ferramentas integradas no Linux.

Exemplo 1: Obtendo Hash SHA256

Imagine que você tem um arquivo chamado document.pdf localizado no diretório /home/user/docs. Para obter o SHA256 hash deste arquivo no Linux, execute o seguinte comando:

sha256sum /home/user/docs/document.pdf

A saída exibirá o valor SHA256 hash do arquivo.

Exemplo 2: Obtendo Hash MD5

Suponha que você tenha um arquivo chamado image.jpg armazenado no diretório /home/user/pictures. Para obter o MD5 hash deste arquivo no Linux, execute o seguinte comando:

md5sum /home/user/pictures/image.jpg

O terminal exibirá o valor MD5 hash do arquivo.

Exemplo 3: Obtendo Hash SHA1

Considere um cenário onde você tem um arquivo chamado data.txt localizado no diretório /home/user/files. Para obter o SHA1 hash deste arquivo no Linux, execute o seguinte comando:

sha1sum /home/user/files/data.txt

A saída exibirá o valor SHA1 hash do arquivo.


Operações Avançadas de Hash no Linux

Hash de Múltiplos Arquivos de Uma Vez

# Hash all PDF files in directory
sha256sum /home/user/docs/*.pdf

# Hash all files recursively
find /home/user/data -type f -exec sha256sum {} \;

Criar Arquivo Manifesto de Hash

Gere um arquivo contendo hashes para verificação posterior:

# Create checksum file
sha256sum /home/user/important/* > checksums.txt

# Verify files against checksum file
sha256sum -c checksums.txt

Saída quando os arquivos coincidem:

file1.txt: OK
file2.pdf: OK
file3.jpg: OK

Comparar Hash com Valor Esperado

# Method 1: Manual comparison
expected_hash="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
actual_hash=$(sha256sum /path/to/file | awk '{print $1}')

if [ "$actual_hash" == "$expected_hash" ]; then
    echo "✓ File verified - hash matches"
else
    echo "✗ WARNING: Hash mismatch!"
fi
# Method 2: Using echo and checking
echo "$expected_hash  /path/to/file" | sha256sum -c -

Hash a partir da Entrada Padrão

# Hash text directly
echo -n "Hello World" | sha256sum

# Hash command output
cat /etc/passwd | sha256sum

# Hash without trailing newline (important!)
echo -n "text" | sha256sum  # Correct
echo "text" | sha256sum     # Different hash (includes newline)

Casos de Uso Práticos

1. Verificar ISOs Baixados

Distribuições Linux fornecem checksums de hash para verificar downloads:

# Download Ubuntu ISO hash
wget https://releases.ubuntu.com/SHA256SUMS

# Verify your downloaded ISO
sha256sum ubuntu-26.04-desktop-amd64.iso

# Compare against published hash
grep ubuntu-26.04-desktop-amd64.iso SHA256SUMS

2. Detectar Adulteração de Arquivos

Monitore arquivos críticos do sistema:

# Create baseline
sudo sha256sum /etc/passwd /etc/shadow /etc/sudoers > /secure/baseline-hashes.txt

# Later, check for changes
sudo sha256sum -c /secure/baseline-hashes.txt

# Script for monitoring
#!/bin/bash
if ! sudo sha256sum -c /secure/baseline-hashes.txt > /dev/null 2>&1; then
    echo "ALERT: System files modified!" | mail -s "Security Alert" [email protected]
fi

3. Deduplicar Arquivos

Encontre arquivos duplicados usando hashes:

# Find duplicates in directory
find /home/user/photos -type f -exec sha256sum {} \; | sort | uniq -w 64 -D

4. Verificar Integridade de Backup

# Create hash manifest before backup
find /data -type f -exec sha256sum {} \; > /backup/manifest-$(date +%Y%m%d).txt

# After restore, verify
sha256sum -c /backup/manifest-20260524.txt

Scripts de Automação

Script 1: Gerador Recursivo de Hash

#!/bin/bash
# hash-directory.sh
# Usage: ./hash-directory.sh /path/to/directory

if [ $# -eq 0 ]; then
    echo "Usage: $0 <directory>"
    exit 1
fi

directory="$1"
output="hashes-$(date +%Y%m%d-%H%M%S).txt"

echo "Generating SHA256 hashes for: $directory"
find "$directory" -type f -exec sha256sum {} \; > "$output"
echo "✓ Saved $(wc -l < "$output") file hashes to: $output"

Script 2: Ferramenta de Verificação de Hash

#!/bin/bash
# verify-hashes.sh
# Usage: ./verify-hashes.sh checksums.txt

if [ ! -f "$1" ]; then
    echo "Error: Checksum file not found"
    exit 1
fi

echo "Verifying file integrity..."
if sha256sum -c "$1" 2>/dev/null; then
    echo "✓ All files verified successfully"
    exit 0
else
    echo "✗ Some files failed verification"
    exit 1
fi

Script 3: Verificação de Download

#!/bin/bash
# verify-download.sh <file> <expected-sha256>

file="$1"
expected="$2"

if [ ! -f "$file" ]; then
    echo "Error: File not found"
    exit 1
fi

actual=$(sha256sum "$file" | awk '{print $1}')

if [ "$actual" == "$expected" ]; then
    echo "✓ Download verified - SHA256 matches"
    exit 0
else
    echo "✗ DANGER: SHA256 mismatch!"
    echo "Expected: $expected"
    echo "Actual:   $actual"
    exit 1
fi

Otimização de Desempenho

Hash de Arquivos Grandes com Eficiência

Para arquivos muito grandes, você pode monitorar o progresso:

# Using pv (pipe viewer) to show progress
pv large-file.iso | sha256sum

# Install pv if needed
sudo apt install pv  # Debian/Ubuntu
sudo dnf install pv  # Fedora

Hash Paralelo

Faça hash de múltiplos arquivos em paralelo usando GNU Parallel:

# Install parallel
sudo apt install parallel

# Hash files in parallel (4 jobs)
find /data -type f | parallel -j 4 sha256sum {} > hashes.txt

Benchmark de Algoritmos de Hash

# Compare speed of different algorithms
time sha256sum large-file.bin
time sha1sum large-file.bin
time md5sum large-file.bin

# Typical results (1GB file):
# MD5:    ~1-2 seconds (fastest, insecure)
# SHA1:   ~2-3 seconds (deprecated)
# SHA256: ~3-5 seconds (recommended)

Comparação de Segurança dos Algoritmos de Hash

AlgoritmoTamanho do HashStatus 2026Caso de Uso
SHA-256256 bits (64 caracteres)✅ SeguroRecomendado para todos os fins de segurança
SHA-512512 bits (128 caracteres)✅ SeguroSegurança extra para dados sensíveis
SHA-1160 bits (40 caracteres)⚠️ ObsoletoApenas para compatibilidade legada
MD5128 bits (32 caracteres)❌ QuebradoApenas para fins não relacionados à segurança

Recomendação 2026: Sempre use SHA-256 ou SHA-512 para aplicações críticas de segurança.


Integração com Gerenciadores de Pacotes

Verificar Pacotes APT (Debian/Ubuntu)

# Check package integrity
debsums -c

# Verify specific package
debsums openssh-server

Verificar Pacotes RPM (Fedora/RHEL)

# Check all packages
rpm -Va

# Verify specific package
rpm -V openssh-server

Melhores Práticas para 2026

  1. Use SHA-256 como padrão: É o padrão atual de segurança
  2. Evite MD5 e SHA-1 para segurança: Apenas para compatibilidade legada
  3. Sempre use a flag -c para verificação: sha256sum -c checksums.txt
  4. Armazene checksums separadamente: Não armazene hashes junto com os arquivos que verificam
  5. Use -b para modo binário: sha256sum -b file.bin (importante em alguns sistemas)
  6. Automatize a verificação: Crie tarefas cron para monitoramento de arquivos críticos
  7. Use --quiet em scripts: Suprima mensagens OK com sha256sum -c --quiet

Solução de Problemas

“No such file or directory”

Solução: Use aspas para caminhos com espaços:

sha256sum "/path/with spaces/file.txt"

“WARNING: X lines are improperly formatted”

Solução: O formato do arquivo checksum deve ser:

hash_value  filename

Note os dois espaços entre o hash e o nome do arquivo.

Permissão Negada

Solução: Use sudo para arquivos do sistema:

sudo sha256sum /etc/shadow

Verificação Multiplataforma

Verificar Hashes Linux no Windows

# PowerShell on Windows
Get-FileHash -Algorithm SHA256 file.txt

Verificar Hashes Linux no macOS

# macOS uses shasum
shasum -a 256 file.txt

Conclusão

O Linux fornece ferramentas integradas poderosas (sha256sum, md5sum, sha1sum) para hashing de arquivos. Seja para verificar downloads, monitorar integridade de arquivos, detectar duplicatas ou garantir a validade de backups, dominar esses comandos é essencial para administração de sistemas e segurança em 2026.

pontos principais:

  • Use sha256sum para todas as funções de hash relacionadas à segurança
  • Crie manifestos de hash com sha256sum * > checksums.txt
  • Verifique arquivos com sha256sum -c checksums.txt
  • Automatize a verificação de hash em scripts para arquivos críticos
  • Evite MD5 e SHA-1 para fins de segurança

Referências

  1. sha256sum - página de manual do Linux
  2. md5sum - página de manual do Linux
  3. sha1sum - página de manual do Linux
  4. GNU Coreutils - Checksums
  5. Funções Hash do NIST