강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
리눅스 파일검색 강좌 find 2편
조회 : 12,385  


리눅스 파일검색 강좌 find 2

 

 

-------------------                    ------------------------

 

1  : 리눅스의 파일검색 유틸리티 find 실무 개론

2  : 특정 UID 소유의 모든 파일찾기

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

4  : 특정 사용자의 홈디렉토리 내에서 특정 파일 찾기

5  : 시스템내의  특정파일들을 검색하여 자동삭제하는 방법

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

7  : 서버내부의 불필요한 파일들 모두 정리(삭제)하기

8  : 특정용량 이상되는 파일들 모두 찾기(용량단위로 파일검색)

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

10  : 지정된 일자 이후에 변경된 모든 파일 찾기(서버 보안점검시 사용)

11  : 지정된 파일보다 이후에 생성된 파일 찾기(서버 보안점검시 사용)

12  : 특정디렉토리내에 존재하는 모든 디렉토리 목록만 확인하기

13  : 서버내에 존재하는 모든 링크파일 검사하기(서버 보안점검시 사용)

14  : root소유의 SetUID파일 찾기 (서버 보안점검시 사용)

15  : 서버내의 백도어파일 찾기(서버 보안점검시 사용)

16  : 서버내부의 .rhosts 파일 찾아서 확인하기(서버 보안점검시 사용)

17  : 서버내부에서 .bash_history 파일을 모두 찾아서 확인하기(서버보안점검시 사용)

18  : 소유자가 없는 파일 또는 소유그룹이 없는 무적파일 찾기(서버 보안점검시 사용)

19  : 쓰기 권한이 있는 파일 디렉토리 찾기(서버 보안점검시 사용)

20  : 특정문자를 포함하는 파일찾기와 문자가 속한 찾기

 

 

 

 

ㅇ 제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 성수

 

ㅇ 본강좌의 자세한 정보 : http://www.superuser.co.kr/linuxcommandbible/

 

 

 

 

 

 

 

 

 

 

 

 

 

7 : 서버내부의 불필요한 파일들 모두 정리(삭제)하기

 

서버내부에서 불필요한 파일을 모두 한꺼번에 삭제하려면 어떻게 할까요. 모두 하나씩 찾아서 삭제하려니 엄두가 나질 않고, 분명 초보관리자들에겐 간단한 일은 아닐 것입니다.  흔히 서버내부에서 불필요한 파일들은 어떤 것들이 있을까요.

가장 흔한 파일로는 *.bak, 즉 백업파일이 있을 수 있습니다.  그리고 *.old *.org 또는 *.orig등의 작업전 복사본등이 있을 수 있겠지요. 하지만, 서버장애의 원인을 발생할 수 있는 웹로그파일을 모두 찾아서 삭제하는 일도 무시할 수는 없는 일입니다.

apache
에 설정된 가상호스트들이 모두 동일한 access_log파일을 가지는 경우도 있겠지만, 대부분의 가상호스트들은 자기자신의 홈페이지디렉토리에 별도로 저장되는 경우가 가장 일반적입니다.

이런 경우에 모든 계정마다 access_log을 찾아서 삭제하려면 여간 귀찮고 힘든일이 아닐 수 없습니다.  이럴 때는 간단히 다음과 같이 해보시기 바랍니다.

 

 

, 위의 명령어는 서버전체(/)를 대상으로 access_log파일을 찾아서(find) "rm -f 파일명"이란 명령어를 실행하라(-exec)는 의미입니다.  따라서 루트디렉토리(/)이하의 모든 디렉토리에 존재하는 모든 access_log파일들이 모두 삭제됩니다.

, access_log파일이 삭제된 후에 아파치(Apache)가 정상작동하지 않을까 염려하시는 분들도 계실 것입니다.  Apache의 기본설정은 access_log파일이나 error_log파일이 존재하지 않을 경우에는 자동으로 파일을 생성하게 되므로 삭제한 후에도 아파치는 정상작동되므로 걱정하지 않으셔도 됩니다. 하지만 로그파일을 저장하는 디렉토리는 반드시 존재해야 아파치가 정상작동된다는 것은 알아두셔야 합니다.

 

이번에는 /home디렉토리에 존재하는 모든 error_log파일을 모두 찾아서 삭제하는 예입니다.

 

 

이와 같은 예를 몇 개 더 들어 보이면 다음과 같습니다.

아래의 예는 /home에 존재하는  모든 *.bak파일을 모두 찾아서 삭제합니다.  하지만, 이런 명령어를 사용할 때에는 본인이 관리하는 서버내부에 *.bak파일이 진짜로 필요하지 않은가를 확인한 후에 사용하셔야 합니다.

 



위의 예들을 참고하여 명령어의 형식을 간단히 정리하면 다음과 같습니다.

사용형식 : find 삭제할경로 -name 파일정규식 -exec rm -f {} ;

 

이와 같습니다.  이를 참고로 응용해 보시기 바랍니다.  , 주의하실 것은 삭제하려는 파일이 진짜로 서버내부에서 불필요한 파일들인가를 반드시 확인하신 후에 사용하셔야 한다는 것입니다.  그리고 가능하다면 경로를 전체경로(/)를 주는 것은 삼가하시기 바랍니다.

 

 

 

8 : 특정용량 이상되는 파일들 모두 찾기(용량단위로 파일검색)

 

서버관리를 하다보면 용량이 엄청나게 큰 파일들 때문에 서버성능이 현저하게 감소하는 경험을 하게됩니다. 관리자는 서버내의 큰 용량을 가진 파일들을 관리할 수 있어야합니다.

따라서 이번예에서는 서버내에서 특정용량 이상되는 파일들을 찾는 방법을 보도록 하겠습니다.

 

아래의 예는 서버내의 /usr 디렉토리 내에 약10MB이상되는 파일들을 찾은 예입니다.

 

 

이렇게 찾은 파일중 불필요한 파일들은 삭제하거나 다른 위치에 옮겨두는 작업을 하실 수 있습니다.  위에서 지정한 파일용량단위는 정확하게 계산된 것이 아니므로 1024k로 지정하면 1MB이므로 이를 기준으로 정확하게 지정해주시면 됩니다.

 

 

 

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

 

이번에는 특정 퍼미션을 가지고 있는 파일들을 모두 찾는 예입니다.  root소유의 특정 퍼미션을 가진 파일을 찾을 수도 있으며, 777로 되어있는 위험한 파일을 찾을 수도 있습니다. 이렇게 다양하게 특정 퍼미션을 가진 파일을 찾는 것은 서버관리에 큰 도움을 줍니다.

 

아래는 SetUID퍼미션과 755라는 퍼미션을 가진 파일을 모두 찾은 예입니다.  SetUID에 대해서는 chmod명령어편을 보시면 자세히 설명해 두었습니다.

 


이를 응용하면 특정소유자의 특정퍼미션을 모두 가진 파일을 모두 찾을 수도 있습니다. 이에 대한 예는 뒤에서 설명하였습니다.

 

 

 

10 : 지정된 일자 이후에 변경된 모든 파일 찾기(서버 보안점검시 사용)

 

이번에는 지정된 일자 이후에 변경된 적이 있는 파일을 찾는 방법입니다.  -used 뒤에 나오는 숫자는 ”, 24시간 단위입니다. 따라서 아래의 예처럼 -used 2라고 하면 2일전부터 현재까지 변경된적이 있는 파일들을 대상으로 찾아줍니다.

 

 

이 또한 서버점검시에 서버해킹으로 인하여 변경된 파일을 찾을 경우에 주로 사용합니다.

 

 

 

11 : 지정된 파일보다 이후에 생성된 파일 찾기(서버 보안점검시 사용)

 

이번에는 특정파일 이후에 새로 생성된 파일들을 찾는 예입니다.  , 아래의 예는 /root/file1.txt라는 파일이 생성된 날짜 이후에 생성된 파일들만을 찾아주는 것입니다.

 

 

이 예는 해킹된 시스템에서 백도어파일이나 해킹에 사용된 특정파일을 확인한 다음 그 파일 이후에 생성된 파일을 모두 찾고자 할 때에 매우 유용하게 사용할 수 있습니다.

 

 

 

12 : 특정디렉토리내에 존재하는 모든 디렉토리 목록만 확인하기

 

이번 예는 특정 디렉토리내에 존재하는 모든 파일들과 디렉토리들 가운데 디렉토리들의 이름과 위치만을 확인한 예입니다.

 

, 다음 예는 /home/locli디렉토리내에 존재하는 모든 디렉토리목록들만을 확인한 예입니다.

 

 

특정 위치내에서 디렉토리만을 확인하고자 할 때에 매우 유용하게 사용할 수 있습니다.

 

 

 

13 : 서버내에 존재하는 모든 링크파일 검사하기(서버 보안점검시 사용)

 

다음은 서버내에 존재하는 링크파일들을 모두 찾는 예입니다.  링크파일은 수퍼유저(root) 이외에는 잘 사용하지 않는 파일입니다. 따라서 이런 링크파일이 목적한 용도 이외에 생성이 되어있는가를 확인하는 것 또한 매우 중요한 것입니다.

 

아래의 예는 전체 시스템(/)을 대상으로 링크파일(l)을 찾아서(find) 보여달라(ls -l {})  의미입니다.

 

 

, 위의 결과를 보시면 현재 시스템내에서 사용되고 있는 모든 링크파일들이 출력되었음을 알 수 있습니다.  이렇게 검색된 링크파일이 정상적인 목적으로 사용되고 있는가 아니면 악의적인 목적으로 해킹된 링크파일인가를 확인하여 적절히 조치(삭제,변경등)를 하시기 바랍니다.

 

 

 

 

ㅇ 제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 성수

 

ㅇ 본강좌의 자세한 정보 : http://www.superuser.co.kr/linuxcommandbible/

 

 

 


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1354


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
박성수
파파
헐렁고수