상세 컨텐츠

본문 제목

find 명령

IT 세상

by 이현민 (지후지율아빠) 2010. 11. 9. 10:13

본문

사용형식 [찾을 디렉토리경로] [찾기옵션] [찾은후행할 작업]

 

option

[찾을 디렉토리경로]

.     : 현재 디렉토리 이하를 검색대상으로 한다.

/     : 루트디렉토리(파일시스템전체) 이하를 대상으로 한다.

~ID : 지정된 ID의 홈디렉토리이하를 대상으로한다.

 

[찾기옵션]

-empty            : 비어있는 파일을 찾는다.

-uid UID          : 지정된 UID를 갖는 파일을 찾는다.

-gid GID          : 지정된 GID를 갖는 파일을 찾는다.

-group 그룹명  : 지정된 group을 갖는 파일을 찾는다.

-name            : 지정된 형식의 패턴을 가지는 파일을 찾는다.

-newer           : 지정된 파일 이후에 생성된 파일을 찾는다.

-perm             : 지정된 퍼미션을 가진 파일을 찾는다.

-used 일자수   : 최근 n일 이후에 변경된 파일을 찾는다.

-user              : 지정된 파일을 소유하고 있는 소유자의 모든 파일을 찾는다.

 

[찾은후 수행할 작업]

-print                    : 찾은 내용을 보여준다.

-exec "수행명령어" : 검색된 파일을 대상으로 :수행명령어"를 실행한다.

 

 

[예제]

특정 사용자의 ID 소유로된 모든 파일 찾기.

[os] find / -user khi083 -print

 

 

현재 디렉토리 이하부터 test 파일명을 찾아 보여준다.

[os] find . -name test -print

 

khi083 사용자의 홈디렉토리에서 test 파일명을 찾아 보여준다.

[os] find ~khi083 -name test -print

 

특정 파일을 찾은 후 자동 삭제방법.

[os] find ~khi083 -name test -exec rm -f {} \;

 

지정한 소유자의 모든 파일을 찾아서 확인하기.

[os] find / -user khi083 -exec ls -l {} \;

 

특정용량 이상되는 파일들 모두찾기.

[os] find /usr/ -size +10000k -exec ls -l {} \;                        -- 약 10MB이상

 

특정 퍼미션을 가지고 있는 파일들을 모두 찾기

[os] find / -perm 4755 -exec ls -l {} \;

 

존재하는 모든 링크파일 찾기

[os] find / -type l -exec ls -l {} \;

 

디렉토리 이하에서 "doc" 라는 문자를 포함하고 있는 파일을 찾아서 파일의 위치와 파일명, 포함된 행을 출력한다.

[os] find /etc type f -exec egrep -i "doc" /dev/null {} \;

 

 

-------------------------------------- 보안 관련된 find --------------------------------------

지정된 일자 이후에 변경된 모든 파일 찾기(서버점검시에 서버해킹으로 인하여 변경된 파일을 찾을 경우)

[os] find / -used 2 -exec ls -l {} \;                                        -- used 뒤에 나오는 숫자는 "일" 즉, 24시간 단위.

 

지정된 파일보다 이후에 생성된 파일 찾기(해킹된 파일이나 백도어 파일을 찾은 후에 그 파일과 함께 시스템에 생성된 파일찾기)

[os] find / -newer /root/file1.txt -exec ls -l {};                          -- used 뒤에 나오는 숫자는 "일" 즉, 24시간 단위.

 

root소유의 SetUID 파일 찾기

[os] find / -user root -perm -4000 -print

 

서버내부에서 .bash_history 파일을 모두 찾아서 확인하기(root소유의 .bash_history파일이 용량이 0이라면 이는 매우 심각한 경우로서 거의 99%이상은 해킹되었다고 보셔도 무방하다.)

[os] find / -name .bash_history -exec ls -l {} \;

 

소유자가 없는 파일 또는 소유그룹이 없는 무적파일 찾기

[os] find / -nouser -o -nogroup -print                                      -- -o옵션은 "OR"를 의미한다

[출처] find 명령어|작성자 Harold

 

 

 

=======================================================================================================

1. 특정문자를 포함하는 파일찾기와 그 문자가 속한 행 찾기
    -  형식 : find 찾을위치 type f -exec egrep -i "포함하는문자" /dev/null {} \;
    -  설명 : 파일에 cmd 라는 단어가 포함되어있는 파일내역을 출력할 수 있다.


2. 소유자가 없는 파일 또는 소유그룹이 없는 무적파일 찾기
    -  형식 : find 찾을위치 -nouser -o -nogroup -print


3. 쓰기 권한이 있는 파일 및 디렉토리 찾기
    -  형식 : find / -type f \( -perm -2 -o -20 \) -exec ls -lg {} \;
    -  형식 : find / -type d \( -perm -2 -o -20 \) -exec ls -lg {} \;
    -  설명 : 일반 사용자들에게 쓰기 권한의 퍼미션이 있는 파일이나 디렉토리를 찾을 수 있다.


4. 서버내부에서 .bash_history 파일을 모두 찾아서 확인하기
    -  형식 : find / -name .bash_history -exec ls -l {} \;
    -  설명 : .bash_history파일은 root를 포함하여 각 사용자들의 홈디렉토리에 존재하는 파일로 각 사용자들이

                 사용했던 명령어가 저장되어 있는 파일임. 만약 파일용량이 0 이라면 해킹을 의심 해볼 수도 있다.


5. 서버내부의 .rhosts 파일을 확인하기
    -  형식 : find / -name .rhosts -exec ls -l {} \;
    -  설명 : .rhosts파일은 외부에서 아무런 제한없이 로그인할 수 있는 접근허용이 설정된 파일이다.

                 파일의 존재여부를 확인해야 한다.


6. 서버 내의 백도어 파일 찾기
    -  형식 : find /dev -type f -exec ls -l {} \;
    -  설명 : 서버내에 백도어가 생성되는 위치는 거의 대부분 /dev이다.

                /dev는 장치파일들이 존재하므로 일반적인 파일들이 존재하지 않다.

                만약 /dev에 일반파일이 검색된다면 거의 대부분 백도어 파일이라고 판단할 수 있다. 
               
(요즘은 딱히 그렇지도 않다.)


7. root소유의 SetUID, SetGID 파일찾기
    -  형식 : find / -user root -perm -4000 -print
    -  형식 : find / -type f \( -perm -4000 -o -perm -2000 \)
    -  설명 : root 소유의 SetUID 파일은 실행시에 root 권한으로 실행이 되므로 반드시 관리되어야 할 파일이다.


8. 서버 내에 존재하는 모든 링크파일 검사하기
    -  형식 : find / -type l -exec ls -l {} \;
    -  설명 : 링크파일은 root 이외에는 잘 사용하지 않는 파일이다. 따라서 이러한 링크파일이 목적한 용도 이외에

                 생성이 되었는가를 확인해야 한다.


9. 특정디렉토리내에 존재하는 모든 디렉토리 목록만 확인하기
    -  형식 : find "검색할 디렉토리경로" -type d -print


10. 지정된 파일보다 이후에 생성된 파일 찾기
    -  형식 : find / -newer /root/file1.txt -exec ls -l {} \;
    -  설명 : /root/file1.txt 라는 파일이 생성된 날짜 이후에 생성된 파일을 검색


11. 지정된 일자 이후에 변경된 모든 파일 찾기
    -  형식 : find / -used 2 -exec ls -l {} \; (2일 전에 변경된 적이 있는 파일을 검색한다.) 
    -  설명 : 지정된 일자 이후에 변경된 적이 있는 파일을 찾는 방법


12. 특정 퍼미션을 가지고 있는 파일 찾기
    -  형식 : find / -perm 4755 -exec ls -l {} \;


13. 특정용량 이상되는 파일찾기
    -  형식 : find /usr -size +10000k -exec ls -l {} \; (10메가 이상되는 파일찾기)


14. 지정한 소유자의 모든 파일을 찾기
    -  형식 : find / -user test01 -exec ls -l {} \; (test01 소유자의 모든 파일찾기)

 

 

 그림출처 : 해커스쿨 http://www.hackerschool.org

 

 

15. 지정한 소유자가  nobody 인 파일과 퍼미션이 644 인 파일을 동시에 찾기

     - 형식 : find / -user nobody -perm -644 -print | more

     - 설명 : 한페이지에 너무 많이 출력될 경우를 대비해 more를 사용하였다. 해킹용 쉘코드가 삽입된 파일들은

                 대부분이 nobody 에 644 이다. 그래서 위 형식으로 검색할경우 의심파일을 쉽게 찾을수 있다.

 

 

16. 해당 문자열이 포함된 파일을 검색하여 출력

    - 형식 : find ./ -type f -name *.cgi -exec grep "찾을문자열" {} \; -print

 

 

 17. 문자열 찾아서 바꾸기
      - 형식 : find / -name "*.txt" -exec perl -pi -e 's/찾을문자열/바꿀문자열/g' {} \;

 

 

 18. 확장자 bak 파일 찾아서 삭제하기
      - 형식 : find ./ -type f -name *.bak -exec rm -f {} \;

 

 

 19. 2개이상의 조건으로 검색
      - 형식 : find . -type f \( -mtime -1 -o -ctime -1 \) -print           
                  (mtime 또는 ctime 1일 미만인 파일)
      - 형식 : find . -type f \( -mtime -1 -a -ctime -1 \) -print    
                  (mtime 과 ctime 모두 1일 미만인 파일)

 

 

20. pds 폴더의 하위 list 출력
     - 형식 : find . -type d -name 'pds' | xargs ls -al

반응형

관련글 더보기