Hackerschool/FTZ 부가설명

find명령어

Kostrian 2015. 1. 29. 10:15

[root@BOF /root]$ find -help

Usage: find [path...] [expression]

default path is the current directory; default expression is -print

expression may consist of:

operators (decreasing precedence; -and is implicit where no others are given):

      ( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2

      EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2

options (always true): -daystart -depth -follow --help

      -maxdepth LEVELS -mindepth LEVELS -mount -noleaf --version -xdev

tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N

      -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME

      -ilname PATTERN -iname PATTERN -inum N -ipath PATTERN -iregex PATTERN

      -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE

      -nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN

      -size N[bckw] -true -type [bcdpfls] -uid N -used N -user NAME

      -xtype [bcdpfls]

actions: -exec COMMAND ; -fprint FILE -fprint0 FILE -fprintf FILE FORMAT

      -ok COMMAND ; -print -print0 -printf FORMAT -prune -ls 

사용법은 find [찾기 시작할 경로] [옵션]으로 리눅스에서 파일을 찾을 때 사용하는 명령어 입니다. level1에서 ExcuteMe 파일을 찾는데 사용하였고 앞으로 리눅스를 사용하게 된다면 꼭 알고 있어야 하는 명령어 입니다.

 

보통은 이름, 권한만 알면 왠만한 파일은 찾을수 있습니다. 그럼 이름, 권한을 알때 사용하는 옵션을 알려드리겠습니다.

 

1) -name "파일 이름(일부)" : 파일 이름(일부)을 가진 파일을 찾습니다. 정확한 파일명을 알고 있을때는 상관이 없으나 일부만 알고 있을경우에는 *을 써서 찾을 수 있습니다. 

예를들면 test라는 확장자는 모르는 파일을 찾을경우에는 "test.*"로 찾아보면 test라는 이름을 가진 모든 파일을 검색해 줍니다. 또한 파일명 중 일부만 알고 있을 경우, 예를들면 find_test.txt파일의 test만 알고 있다면

 [root@BOF /root]$ find / -name "*test*" 2>/dev/null

로 검색을 한다면 파일명에 test가 들어간 모든 파일을 찾습니다.

 

2) -perm [권한] : 원하는 권한을 가진 파일을 찾습니다. 741등의 권한을 검색할수 있는 옵션입니다. 741같은 권한은 리눅스를 조금이라도 사용해 보신 분이라면 알겠지만, 4741같은 권한은 생소하실지도 모르겠습니다. 맨 앞에 붙은 4는 setuid가 걸렸다는 뜻입니다. 이 옵션에는 두 가지 모드가 있습니다. 

ㄱ)  +모드 : 원하는 권한이 r또는 w이라면 해당 모드를 사용하면 적어도 r 또는 w의 권한을 가진 파일을 검색해 줍니다.

ㄴ)  -모드 : 원하는 권한이 rw라면 적어도 rw의 권한이 있는 파일을 검색해 줍니다.

 

즉, 요약하면 +모드는 OR, -모드는 AND로 보시면 되겠습니다.

 

이 외에도 위에 있다시피 많은 옵션들이 존재합니다. 나중에 필요하시면 그때 찾아봐도 무방하다고 생각이 듭니다.

 

그리고 위에 명령한걸 보면 "2>/dev/null"이 붙어있죠? 파일을 찾다보면 퍼미션 문제로 에러가 뜨는 경우가 있습니다. 일반 계정으로 루트 경로부터 검색을 시작한다면 퍼미션 디나이가 쭉 뜨게 됩니다. 이건 이러한 에러를 리다이렉션을 통해 다른곳으로 보내게 됩니다. 이때 /dev/null로 보낸 에러문은 리눅스에서 영원히 없어지게 됩니다.

 

그리고 2를 리다이렉션을 하는데 이는 "stderror"를 뜻하며 퍼미션 디나이로 인한 에러는 걸러지게 됩니다. 여기서 2만 있느냐 라고 생각하실수도 있겠죠? 2외에도 1이 있습니다. 1은 "stdout"을 뜻합니다.

'Hackerschool > FTZ 부가설명' 카테고리의 다른 글

FTZ Level의 비밀번호를 알고 싶다면?  (0) 2015.01.29