우분투 실전 명령어 | sha256sum으로 파일 무결성 검증하기

우분투 실전 명령어 | sha256sum으로 파일 무결성 검증하기

서버에 바이너리나 백업 파일을 내려받았을 때, 전송 중 손상이나 파일 바꿔치기를 빠르게 확인하려면 체크섬 검증이 가장 확실합니다. sha256sum은 배포 문서에 적힌 해시값과 실제 파일 해시를 대조해 안전하게 배포 작업을 이어갈 수 있게 해줍니다.

언제 쓰는가

  • 인터넷에서 설치 파일을 내려받은 뒤 원본과 동일한지 확인할 때
  • 백업 파일 복구 전에 파일 손상 여부를 먼저 점검할 때
  • 여러 서버에 동일 파일을 배포하고 해시로 일관성을 검증할 때

바로 쓰는 명령어

# 1) 파일 해시 계산
sha256sum app.tar.gz

# 2) 공식 문서의 기대 해시와 비교
echo "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef  app.tar.gz" > SHA256SUMS
sha256sum -c SHA256SUMS
# 3) 디렉터리 전체 체크섬 파일 생성
find . -maxdepth 1 -type f -name "*.deb" -print0 | sort -z | xargs -0 sha256sum > SHA256SUMS

# 4) 나중에 일괄 검증
sha256sum -c SHA256SUMS

핵심 옵션/패턴

  • sha256sum <파일>: 파일의 SHA-256 해시를 계산한다.
  • sha256sum -c <체크섬파일>: 체크섬 파일 기준으로 검증한다.
  • 체크섬 파일 형식은 해시값 공백 두 칸 파일명 형태를 맞추면 된다.
  • 자동화에서는 sha256sum -c ... | grep -E 'OK|FAILED'로 성공/실패 라인만 추려서 알림에 붙이면 확인이 빨라진다.

명령 출력 예시

$ sha256sum app.tar.gz
6f2c8d6f8e8f9f9b62d2f2263ff7f699012f4b8bb4b3d43ce12b3e9f4f3b1c2d  app.tar.gz

$ sha256sum -c SHA256SUMS
app.tar.gz: OK
$ sha256sum -c SHA256SUMS
app.tar.gz: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

자주 하는 실수

  • 파일명에 공백이 있는데 체크섬 파일을 대충 편집해 형식을 깨뜨림
    • 수동 편집보다 sha256sum 파일 > SHA256SUMS처럼 명령으로 생성하는 편이 안전하다.
  • 다운로드 후 파일이 바뀌었는데 예전 체크섬 파일을 그대로 재사용함
    • 아티팩트 버전이 바뀌면 체크섬도 반드시 다시 받아야 한다.
  • md5sum만 확인하고 안심함
    • 호환 목적이 아니면 배포 검증에는 SHA-256 이상을 기본으로 쓰는 게 좋다.

검증 방법

# 1) 정상 케이스
echo "hello" > sample.txt
sha256sum sample.txt > SHA256SUMS
sha256sum -c SHA256SUMS   # 기대값: sample.txt: OK

# 2) 변조 케이스
echo "tamper" >> sample.txt
sha256sum -c SHA256SUMS   # 기대값: FAILED 경고
# 3) 자동화용 종료코드 확인
sha256sum -c SHA256SUMS >/tmp/check.log 2>&1
rc=$?
echo "rc=$rc"
cat /tmp/check.log

운영 팁

배포 파이프라인에서는 파일 다운로드 직후 체크섬 검증을 필수 단계로 고정해 두는 것이 좋다. 검증 실패 시 즉시 배포를 중단하고 파일 재다운로드로 분기하면 장애를 크게 줄일 수 있고, 감사 로그에도 해시 검증 결과를 남겨두면 사후 추적이 쉬워진다.

출처

  • GNU Coreutils sha2 utilities 문서
  • Ubuntu manpage sha256sum
  • NIST SHA-2 표준 문서