우분투 실전 명령어 | 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 표준 문서