[bash] 파일을 모든 기록 지우기

#!/bin/bash
# blotout.sh: 파일의 모든 기록 지우기.

#  이 스크립트는 대상 파일을 지우기 전에 
#+ 임의의 바이트들로 덮어쓰고, 0으로 덮어쓰기를 반복합니다.
#  이렇게 하고 나면, 디스크 섹터를 물리적으로 검사해도
#+ 원래의 파일 데이타를 찾아 낼 수 없습니다.

PASSES=7         # 파일 조각(file-shredding) 단계.
BLOCKSIZE=1      #  /dev/urandom 으로 I/O 를 할 때 필요한 유닛 블럭 크기.
                 #+ 이 크기가 지정되지 않으면 이상한 결과가 나옵니다.
E_BADARGS=70
E_NOT_FOUND=71
E_CHANGED_MIND=72

if [ -z "$1" ]   # 파일이 지정되지 않았음.
then
  echo "사용법: `basename $0` filename"
  exit $E_BADARGS
fi

file=$1

if [ ! -e "$file" ]
then
  echo "\"$file\" 파일을 찾을 수 없음."
  exit $E_NOT_FOUND
fi  

echo; echo -n "\"$file\" 파일을 정말로 완전히 지워 버리겠습니까(y/n)? "
read answer
case "$answer" in
[nN]) echo "하기 싫다구요?"
      exit $E_CHANGED_MIND
      ;;
*)    echo "\"$file\" 파일을 완전히 지우는 중.";;
esac


flength=$(ls -l "$file" | awk '{print $5}')  # 5 번째 필드가 파일 길이.

pass_count=1

echo

while [ "$pass_count" -le "$PASSES" ]
do
  echo "$pass_count 번째 단계"
  sync         # 버퍼 플러쉬.
  dd if=/dev/urandom of=$file bs=$BLOCKSIZE count=$flength
               # 파일을 임의의 바이트들로 덮어씀.
  sync         # 다시 버퍼 플러쉬.
  dd if=/dev/zero of=$file bs=$BLOCKSIZE count=$flength
               # 파일을 0으로 덮어씀.
  sync         # 또 다시 버퍼 플러쉬.
  let "pass_count += 1"
  echo
done  


rm -f $file    # 마지막으로, 온통 뒤섞이고 조각나 버린 파일을 삭제.
sync           # 마지막 버퍼 플러쉬.

echo "\"$file\" 파일이 완전히 삭제되었습니다."; echo


#  이 스크립트는 파일을 완전히 "조각내는데"(shredding) 비효율적이고 느린 방법을 
#+ 쓴 것만 빼면 정말 안전합니다. GNU "fileutils" 패키지중의 하나인
#+ "shred" 명령어도 똑같은 일을 하지만 좀 더 효율적입니다.

#  이 스크립트로 지워진 파일은 일반적인 방법으로는 "undelete"되거나
#+ 복구해 낼 수 없습니다.
#  하지만...
#+ 이런 간단한 방법은 과학적인 분석(forensic analysis)까지 막아내지는 못합니다.


#  Tom Vier의 "wipe" 파일 삭제 패키지는 이 간단한 스크립트보다 좀 더 
#+ 완전하게 파일을 지워 줍니다.
#     http://www.ibiblio.org/pub/Linux/utils/file/wipe-2.0.0.tar.bz2

#  파일 삭제와 보안에 대해서 좀 더 자세하게 알고 싶다면,
#+ Peter Gutmann의 논문을 참고하기 바랍니다.
#+     "Secure Deletion of Data From Magnetic and Solid-State Memory".
#           http://www.cs.auckland.ac.nz/~pgut001/secure_del.html


exit 0
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by ⓒ쟁이™

2007/11/21 14:11 2007/11/21 14:11
,
Response
No Trackback , No Comment
RSS :
http://funix.net/rss/response/6


Archives

Recent Trackbacks

129

94

-14 days

today : 114

Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.