Mylabs

Linux - find 명령어의 사용법 본문

Dev

Linux - find 명령어의 사용법

[Edge] 2009. 4. 28. 13:42

find 명령어는 특정 파일을 찾을때 유용하게 사용되는 Linux 명령어중에 하나이다.
특히 각종 사이트 해킹문제를 풀때, SetUID 가 걸린 파일을 찾을때 자주 사용된다.

[ find 명령어 옵션 ]
 -perm : 특정 권한과 일치하는 파일을 찾는다.
 -name : 특정 이름과 일치하는 파일을 찾는다.
 -user : 특정 유저와 일치하는 파일을 찾는다.
 -group : 특정 그룹과 일치하는 파일을 찾는다.
 -size : 특정 사이즈와 일치하는 파일을 찾는다.   
            size 추가 옵션 형태 : find / -size n[bckw]
                    -> n을 크기를 지칭하는 정수이고, 뒤에 4개의 옵션은 단위를 지칭한다.
                         default 값은 b로 b는 블록단위, c는 바이트, k는 킬로바이트, w는 2-바이트 워드를 말한다.

[ find 명령어 예제 ]
  ex) $ find / -perm -4000
    위 예문을 설명하자면,
    '/' 는 Linux의 최상위 디렉토리로서,
   
즉, 해당 서버 전체에서 검색한다는 의미이다.

   '-perm'은 퍼미션옵션을 줘서 특정 권한과 일치하는 파일을 찾는다는 의미이다.
   
'-4000'은 퍼미션을 의미하는 것으로서,
     4000앞의 '-'는 "적어도"를 의미합니다.  적어도 4000, 즉,
    최소한 4000이라는 퍼미션이 설정되어있는 파일부터 그 이상으로 찾겠다는 뜻이다. 

    4는 SetUID를 의미한고, SetUID가 Set되어있는 파일은 퍼미션에 s가 붙는다.

    파일 정보중 's'가 바로 SetUID가 걸려있음을 의미하는 것이다.

    SetUID는 해당 파일을 실행중 SetUID가 걸려있는 해당사용자로 잠시동안 권한이 변경됨을 뜻한다.
  
 그리고 그 파일의 실행이 끝나면 다시 원래 자신의 권한으로 돌아오게 된다.

    - 한 예제를 들자면, passwd 라는 명령으로 사용자는 자신의 비밀번호를 수정이 가능한데,
      radhat 6.0부터 리눅스에는 비밀번호를 따로 관리하는 /etc/shadow라는 파일에 접근을 해야하는 것이다.
     (보안을 위해..)
     사용자가 passwd 명령어를 사용하여, 자신의 비밀번호를 바꾸면, shadow파일도 물론 수정이 된다.
     그런데 shadow 파일은 root권한을 가진 사람만이 접근이 가능하도록 설정이 되어 있다.
     어떻게 일반사용자의 권한으로 shadow파일을 접근한 것일까?...
     즉, shadow 파일을 접근하는 그 순간에는 root의 권한을 가져야 하므로 passwd 명령에는 root권한의
     SetUID가 걸려있는 것이다. 그래서 작업을 할때는 root의 권한을 가지지만, 작업이 끝난 후에는 다시 자신
     의 권한으로 되돌아오게 되는 것이다.

    -4000에서 000은 rwx 퍼미션의 3비트의 2진수를 십진수로 바꾼 값.
            0(유저) / 0(그룹) / 0(Other)

    - 즉, 위 예문은 "서버 전체에서 SetUID가 걸린 파일을 찾는다" 가 되는 것이다.

'Dev' 카테고리의 다른 글

구글 애드센스 신청하기  (0) 2015.06.23
linux LANG 설정  (0) 2012.01.03
64비트 변수 출력하기 (64비트 포멧스트링)  (0) 2010.04.27