Time for Security

블로그 이미지
제가 교육을 받으며 이해한 보안 지식을 복습하고, 정리해가는 작은 블로그입니다.
by 하꼬방
  • Total hit
  • Today hit
  • Yesterday hit

 안녕하세요.


 오늘의 포스팅은 파일 및 디렉토리를 검색하는 방법에 대한 것입니다.


 찾는 파일 및 디렉토리가 어디에 있든 명령어만 확실히 알고 있다면 찾을 수 있답니다.


 그럼 포스팅을 시작하도록 할게요! 



 첫번째 명령어는 grep 입니다.


 어원은 유닉스 ed의 비슷한 기능을 수행하는 g/re/p에서 유래되었다고 합니다.


 global / regular expression / print 에서 각각의 머릿글자를 따 온 것이며 이것은 ed 텍스트 편집기에서 쓰이는 연속적인 지시어라고 하네요. 


 사용법은 grep (옵션) (패턴) (파일명 및 디렉토리명) 입니다.


 위 실습을 보면 /etc/passwd 안에서 root라는 패턴을 찾는 경우입니다.


 이 grep 명령어는 다양한 옵션이 있는데 지금부터 알아보도록 하겠습니다.



 첫번째는 -n입니다.


 이 명령어는 찾은 패턴이 몇번째 줄에 있나 그 라인도 출력해주는 명령어입니다.


 나중에 직접가서 찾기 편하겠죠?



 다음은 -v입니다.


 이것은 검색 패턴을 제외하고 검색하는 명령어에요.


 쓸일이 딱히 없어 보이지만 처음에 검색한 상황에서 무언가를 제외하고 싶을 때 사용하면 상당히 유용하답니다.



 다음은 -l입니다.


 이것은 해당 패턴 라인을 출력해주는 것이 아닌 매칭되는 패턴이 있는 파일 이름을 출력해주는 명령어입니다.


 어디에 내가 원하는 것이 있는 지 찾아보기 편리한 명령어입니다.



 다음은 -c입니다.


 검색 패턴과 매칭된 라인 개수를 출력해주는 명령어입니다.


 너무 많은 검색 결과가 나왔을 때 그 라인 수를 세기에 적합하군요.



 다음은 -w입니다.


 -w를 사용하게 되면 순수 그 단어만 찾게 됩니다.


 예를 들어 위의 실습에서 sh에 관한 패턴을 찾았는데요.


 보시면 bash, shutdown, sshd가 검색되었는데, -w 명령어를 사용하게 되면 이들은 검색되지 않습니다.


 왜냐하면 순전히 sh로만 되어있는 문자열을 검색하기 때문이죠!


 꽤 많은 명령어를 봤기 때문에 표로 한번 정리하고 넘어가볼까요? 


옵션 

설명

-i 

 검색 패턴 대소문자 무시 

-l 

 매칭되는 패턴이 잇는 파일 이름 출력 

-n 

 매칭되는 줄 번호 표시 

-v 

 검색 패턴을 제외하고 검색 

-c 

 검색 패턴과 매칭되는 줄 개수 출력 

-w 

 해당 패턴만 검색 


 그리고 정규표현식을 이용해 패턴을 검색할 수도 있습니다.


 익숙해지기만 하면 굉장히 편리한 표현입니다.


 사실 이 표현을 모른다면 검색 명령어를 쓰기 어렵습니다.


 표로 함께 이해해보겠습니다.

 

메타 문자 

용도 

예제 

결과 

^ 

 줄의 시작 지정 

 ^solaris 

 solaris로 시작하는 줄 

$ 

 줄의 마지막 지정

 solaris$ 

 solaris로 끝나는 줄 

. 

 한 문자 대치

 s...s 

 s로 시작하고, 5개의 아무문자 후, s로 끝남 

* 

 아무것도 없거나 여러 문자 대치 

 [a-z]* 

 소문자로 시작하는 모든 문자 도는 아무것도 없음 

[] 

 패턴 중 한 문자 대치

 [Ss}olaris 

 Solaris 또는 solaris 

[^] 

 패턴 중 제외할 한 문자

 [^a-r]olaris 

 첫 문자가 a에서 r까지 제외하고 s에서 z까지 오는 문자 


 헷갈리신다면 더 자주보고 계속 사용해 익숙해지는 방법밖에 없습니다.



 다음은 egrep입니다.


 기본적으로 grep 명령어와 사용법이 같구요.


 다른 점은 grep 명령어의 기능에 추가로 확장 정규 표현식을 지원한다는 것입니다.


메타 문자 

용도 

예제 

결과 

+ 

 특정 문자 앞에 하나 이상의 문자 있음 

 [a-z]+tion 

 tion 문자 앞에 소문자의 문자 있음 

x|y 

 x 또는 y

 root|admin 

 root 또는 admin 

(abc|def) 

 abc 또는 def (문자열)

 Ha(ve|ing) 

 Have 또는 Having 


 위의 표 메타 문자 정도가 더 추가되었습니다.


 위의 실습에서는 b(a|o)를 사용했기 때문에 ba가 포함되는 혹은 bo가 포함되는 단어가 검색되신 것을 볼 수 있습니다.


 다음은 fgrep입니다.


 이 명령어는 위의 정규표현식 문자를 정규표현식이 아닌 문자 그대로 인식하는 명령어입니다.


 파일 및 디렉토리의 내용에 정규표현식의 문자 패턴을 검색할 때 사용합니다.


 다른 특이점은 없습니다. 



 마지막으로 find 명령어입니다.


 단어 그대로 무언가를 찾을 때 쓰는 find입니다.


 사용법은 find (경로) (조건) (동작) 입니다.


 경로는 검색을 시작할 경로를 지정해줍니다.


 조건은 검색 조건을 지정해주고, 동작은 파일 검색 후 동작을 지정하는 역할을 합니다.


 위의 실습은 root 디렉토리에서 파일이름이 hosts인 파일을 찾는 예시입니다.


 find 명령어의 조건을 표로 정리해보았습니다.

 

조건 

설명 

-name 

 특정 파일 이름 지정 

-type 

 검색할 파일 종류 지정 

-perm 

 특정 권한을 가진 파일 검색 

-user

 특정 사용자가 소유한 파일 검색 

-size [+|-]n 

 파일의 특정 크기 검색 

-atime [+|-]n 

 파일에 접근한 시간 검색 

-mtime [+|-]n 

 파일을 수정한 시간 검색 


 몇가지 참고하실 점을 말씀드리면 특정 파일 이름을 지정시에 당연히 메타문자는 사용 가능합니다.


 그리고 검색할 파일 종류는 d의 경우 directory, f의 경우 file입니다.


 여러 형식을 사용할 수 잇습니다.


 다음은 동작입니다.


 동작

설명

-print 

 터미널에 검색한 파일의 경로와 이름을 표시 

-ls 

 터미널에 검색한 파일의 경로와 이름뿐만 아니라 자세한 정보 표시 

-exec command {} \; 

 검색한 파일에 특정 명령 수행 

-ok command {} \; 

 -exec 결과와 비슷하나, 특정 명령을 대화형으로 진행 




 여기까지 파일 및 디렉토리 검색 방법에 대한 포스팅이었습니다.


 간단한듯 암기해야할 부분이 상당히 많은 부분입니다.


 특히 정규표현식 메타문자는 쉽게 익숙해지지 않는 부분입니다.


 하지만 몇 번 사용해보고 반복적으로 학습하신다면 금새 익숙해진 자신을 볼 수 있을거에요.


 다음 포스팅에서 또 만나도록 해요. 

AND

ARTICLE CATEGORY

전체 (115)
블로그 소개 (1)
KITRI 교육 (95)
보안 지식 창고 (16)
한 잔의 여유 (2)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ARCHIVE