2010. 11. 17. 09:08

Ubuntu File에 대해 좀더 자세히 알아내기 (ls 명령과 file 검증(md5, sha1)하기)

이전(2010/11/16 - [Research/Ubuntu] - Ububtu/Linux에서 File 검색(Search)하기)에서 file을 어떻게 찾는지를 알아 보았습니다. 그리고 이제 이러한 file들에 대해 좀더 자세한 정보를 구하는 방법을 알아보도록 합니다. 덜 사용되는 ls 명령의 option을 사용하면 사용하지 않을 때 보다 당신이 알지 못했던 정보를 나열해 줍니다. file과 같은 명령은 file의 type을 알아내는데 도움을 줍니다. 그리고 md5sum과 sh1sum 명령으로 file의 검증을 해 볼 수 있습니다.


file 나열 하기

ls 명령에 친숙하더라도, 당신의 system상에 있는 file의 많은 정보를 알려주는데 도움을 준다는 것에는 그다지 익숙하지 않을 것입니다. 다음은 file과 directory의 long list를 표시하는데 사용되는 option인 -l의 예를 보여주고 있습니다.
  • ls -l : 현재 directory의 file과 directory
  • ls -la : 점(.)으로 시작하는 file/directory 포함
  • ls -lt : 최근에 변경된 순으로 정렬
  • ls -lu : 최근에 접근한 순으로 정렬
  • ls -ls : 크기순으로 정렬
  • ls -li : 각 file 마다 연계된 inode 표시
  • ls -ln : user/group ID의 숫자를 표시
  • ls -lh : 사람이 쉽게 읽을 수 있도록 사이즈 표시 (K, M, ...)
  • ls -lR : sub-directory를 recursive하게 표시

당신이 file을 list할 때 다른 type의 file을 다르게 표시하는 방법이 있습니다.

  • ls -F : file type 별로 문자를 추가시킴
    symbolic link(@), directory(/), pipe(|), executable(*), socket(=)
  • ls --color=always : type 별로 다른 색으로 표현
  • ls -C : column으로 표현

file 검증 하기

software package나 CD 혹은 DVD image등의 파일은 internet 등에서 공유되는데, 종종 SHA1SUM이나 DD5SUM file이 함께 배포됩니다. 이러한 file은 배포한 저장소로 부터 정확하게 download되었는지 확신시켜 주는데 사용되는 checksum을 가지고 있습니다.

아래는 md5sum과 sha1sum 명령으로 file의 checksum을 만드는 예입니다.
$ md5sum system-admin-guide.pdf
f85a9c13ac40f439456e6238f2f39610  system-admin-guide.pdf
$ sha1sum system-admin-guide.pdf
a83687b62e746aaf4ed1be400f71c6a130be0770  system-admin-guide.pdf
$ md5sum index.html
d41d8cd98f00b204e9800998ecf8427e  index.html
$ md5sum index.html > md5sum.txt
$ md5sum -c md5sum.txt

index.html: OK
$ sha1sum index.html > sha1sum.txt
$ sha1sum -c sha1sum.txt
index.html: OK

위와 같이 되며, 보통의 checksum 파일은 여러개의 파일로 구성되어 있습니다. 만일 단일 파일만 체그해 보고 싶다면, 다음과 같이 할 수 있습니다.

$ cat md5sum.txt | grep Release.gpg | md5sum -c
./somedirectory/Release.gpg: OK

만일 md5sum.txt file 대신하여 sha1 checksum file이 있다면, 동일한 방법을 사용하면 됩니다. find 명령과 조합하여 md5sum 명령으로 당신의 file system의 file을 검증할 수 있습니다. 다음의 예를 보십시요.
$ sudo find /etc -type f -exec md5sum {} \; > /tmp/md5.list 2> /dev/null
$ head /tmp/md5.list
4c82dbf7e1d8c5ddd70e40b9665cfeee  /etc/wpa_supplicant/ifupdown.sh
57813804697f518c667b6930e3c7df2d  /etc/wpa_supplicant/functions.sh
1dcca5080e42ea56d7be96d71214f57b  /etc/wpa_supplicant/action_wpa.sh
92a0a19db9dc99488f00ac9e7b28eb3d  /etc/hosts.deny
887c00ab9cf13f6944abe88d424c9d08  /etc/ufw/sysctl.conf
9cdc37360d39d2623111bd3190d53839  /etc/ufw/before6.rules
44eab12c7b5c683d750b83dcffb6cccb  /etc/ufw/ufw.conf
8e482ff92456fcb9ea15ecbd96ea8cf5  /etc/ufw/before.rules
5d543566c1e643829452cf7c06869ea2  /etc/ufw/after6.rules
53e906b055d9145d03b6a2fadeca20f1  /etc/ufw/after.rules
$ cd /etc
$ sudo md5sum -c /tmp/md5.list | grep -v 'OK'

$ ls *.txt
errors.txt  everything.txt  md5sum.txt  ouptput.txt  output.txt  sha1sum.txt
$ cp output.txt fail.txt
$
ls *.txt
errors.txt  everything.txt  fail.txt  md5sum.txt  ouptput.txt  output.txt  sha1sum.txt
$ find ~ -type f -exec md5sum {} \; > ~/md5.list 2> /dev/null
$ cp errors.txt fail.txt
$ md5sum -c md5.list | grep -v 'OK'
/home/greenfish/fail.txt: FAILED
md5sum: WARNING: 1 of 188 computed checksums did NOT match
위 첫번째 예는 /etc에 있는 파일의 md5 checksum을 만들고, 즉시 검증을 하도록 하는 것입니다. 그리고, 두번재는, checksum을 만든뒤, fail.txt의 file을 변경하고 md5 검증을 한뒤, 변경된 사실을 알려주는 과정을 보여주고 있습니다.