수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1691963
  • Today | 107
  • Yesterday | 564

1 Articles, Search for 'find'

  1. 2007/06/22 시스템 관리자를 위한 기초 명령어 활용법
Unix & Linux/System2007/06/22 14:05

시스템 관리자를 위한 기초 명령어 활용법

참고 : 시스템 로그분석 (해킹 피해와 보안 추적의 결정적 파일) - 안정철

01. 패턴을 찾아주는 grep(egrep, fgrep) 명령

grep은 입력에서 주어진 패턴을 포함하고 있는 줄을 찾아주는 명령이다. 많은 시스템 관리 명령들과 파이프(pipe)를 이용해서 사용할 수 있다. 흔히 사용하는 것은 프로세스 확인이다.

ps aux | grep httpd


위와 같이 현재 시스템의 프로세스 중 httpd만 검색해 낸다. 만일 pipe를 이용하여 검색할 경우 검색 패턴이 한개 이상일 경우엔 egrep을 이용하여 검색할 수 있다.

ps aux | egrep 'httpd|mysql'


이 밖에 grep는 file 내용 중에 특정 패턴이 들어 있는 행을 찾아서 출력해준다. option을 이용하여 보다 다양한 패턴을 선택하여 검색할 수 있다.

-i : 대소문자 구별을 하지 않는다.
-v : 패턴을 포함하지 않는 행만 출력한다.
-n : 행 번호를 출력한다.
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 갯수만 보여준다.


몇 가지 예를 들어 보자.

grep [option] "pattern" 파일명


대표적인 사용 방법이다. 파일에 pattern이란 단어를 포함하는 행을 출력한다.

grep -v "^[ ^l]*$" 파일명


위는 공백을 제거한 파일 내용 살펴보기

grep -v "^#*$" 파일명


위는 주석을 제거한 파일 내용 살펴보기를 의미한다. 이 밖에 패턴과 정확히 일치하는 것만을 찾아주는 fgrep가 있다. grep, egrep, fgrep의 옵션으로는 위의 옵션을 공통적으로 사용한다.

유용한 팁 하나를 소개해 보겠다. grep는 현재 디렉토리에 존재하는 파일만을 검색한다. 만일 현재 디렉토리와 그 하위 디렉토리까지 grep 패턴 검색을 하고자 할 땐 아래와 같이 find 명령을 이용하면 된다.

find . -exec grep "pattern" {} \;



02 필터 역할을 하는 awk 명령

awk는 grep과 같이 출력된 문장에서 필요한 부분만 걸러내는 필터 역할을 하는 명령어의 일종이다. 사용하기에 따라서 매우 유용하다.

ls -al


사용자 삽입 이미지

위의 출력문은 Tab(공백)으로 각 컬럼을 구분하는데 다음과 같이 하면 원하는 컬럼값만을 선택해서 출력이 가능하다.

ls -al | awk '{print $1 $5 $9}'


사용자 삽입 이미지

위와 같이 1, 5, 9번째 컬럼값만 출력이 된다. 이 밖에 awk는 연산 기능을 가지고 있다.

find /home/webdizen -user webdizen -ls | awk '{sum+=$7}; END {print "User webdizen total disk use = " sum }'


사용자 삽입 이미지

이와 같이 webdizen 권한의 파일들의 크기를 합한 값을 보여준다.

이 명령 라인은 find로 검색한 파일을 ls -al 형식으로 출력한 후 여기서 바이트 수를 가지고 있는 7번째 열의 합계를 누적한다. 그리고 마지막 줄에 최종 결과값을 출력한다. 이 밖에 awk는 평균값도 구할 수 있다. 방법은 의외로 간단하여 END 절의 sum을 sum/NR로 대체하면 평균값이 나온다. NR은 awk내부 변수로서 현재까지의 입력 라인수를 갖는다.


03. 가장 많이 쓰이는 find 명령

find 명령어는 시스템 관리 명령 중 가장 많이 사용되는 명령어 중 하나이다. 이 명령어의 다양한 기능을 많이 알수록 관리자의 불필요한 작업량을 최대한 줄일 수 있을 것이다.

-atime n : 정확히 n일 전에 access 된 파일
-mtime n : 정확히 n일 전에 수정된 파일
-newer [file] : file 보다 최근에 수정된 파일
-size n : 정확히 n x 512byte의 길이를 갖는 파일
-type c : 파일의 종류를 기술. f : 파일 d : 디렉토리
-fstype [filesystme] : 파일 시스템 종류
-name [pattern] : 파일 이름 검색
-perm p : 파일 접근 퍼미션이 p인 경우
-user [user] : 파일 소유권이 user인 파일
-group [group] : 파일 그룹이 group인 파일
-nouser : 파일 소유자가 /etc/passwd에 없는 경우
-nogroup : 파일 소유 그룹이 /etc/group에 없는 경우
-uid n : 파일 uid가 n인 경우
-gid n : 파일 gid가 n인 경우


단순히 위의 옵션대로 사용하면 그렇게 유용해 보이지 않을 수 있을 것이다. 예를 들어 누가 정확히 3일 전에 접근한 파일들으 검색할 것인가? 하지만 +, - 기호를 이용하여 기간, 시간, 크기와 같은 수치들의 범위를 지정할 수 있다.

+ 는 ~~ 보다 큰 경우, - 는 ~~ 보다 작은 경우
-mtime +7 : 수정된 지 7일이 지난 파일
-mtime -7 : 수정된 지 7일이 안된 파일
-size +100 : 50kbyte 보다 큰 파일
-name 뒤엔 인용 부호(와일드 카드 문자)를 같이 사용할 수 있다.
-name *.dat : 확장자가 dat인 모든 파일


이런 옵션들을 차례로 기술하여 파일을 찾을 경우 AND 연산이 적용된다. 그리고 -o 옵션을 이용하여 OR을 적용할 수도 있고 ( )를 이용하여 그룹을 지어 적용할 수도 있다. 이 밖에 NOT 연산도 가능한데 옵션 앞에 ! 부호를 달아 주면 된다. 밑의 몇 가지 예를 살펴보자.

find ./ -atime +60 -mtime 120

(AND 논리 연산으로 접근한지 60일 지난 파일 중 수정한 지 120일 지난 파일)

find ./ \( -user webdizen -o -group webdizen \)

(OR 논리 연산으로 소유자나 그룹이 webdizen인 경우)

사용자 삽입 이미지


find ./ \( ! -user webdizen -o ! -group webdizen \)

(NOT 논리 연산으로 소유자나 그룹이 webdizen이 아닌 경우)

사용자 삽입 이미지


-perm 옵션은 숫자 형태의 특정 접근 모드를 이용하여 파일을 검색하는 옵션이다.

옵션별 사용 예를 들어보자.
-perm 75 : permission = 755
-perm -002 : 모든 사람들이 기록할 수 있는 파일
-perm -4000 : SUID 엑세스 설정
-perm -2000 : SGID 엑세스 설정


그 외에도 지원되는 내부 옵션들이 있다.

-print : 대응되는 파일의 경로명을 출력
-ls : 대응되는 파일에 대한 긴 디렉토리 목록을 출력
-exec commands : 대응되는 파일에 대해 commands 명령 수행
-ok commands : 파일에 대한 commands 명령 수행 전에 입력 대기 상태
-xdev : 검색 시작 디렉토리가 속해 있는 파일 시스템에 대해서만 검색 제한
-mount : IRIX와 SCO UNIX에서 -xdev 옵션
-prune : 서브 디렉토리는 검색을 하지 않음
-print 옵션은 근래는 기본으로 들어간다. 굳이 붙일 필요는 없고, -exec, -ok 옵션 사용 시에는 반드시 마지막에 \; 으로 구문을 마감해야 한다.


예를 들어서 find로 검색한 파일을 지우기 위해서는 다음과 같이 한다.

find ./ -name *.* -exec rm -f {} \;


find 명령어를 이용한 시스템 관리 방법 예를 몇 가지 더 들어 보자.

파일 크기가 20M 이상이며 30일 이상 동안 수정되지 않은 파일을 찾는다.

find / -type f -size +20480 -mtime +30 -ls
find / -type f -size +20480 -mtime +30 -exec rm -f {} \; (대응되는 파일 삭제)


보안에 관련된 팁으로서, 모든 setuid, setgid를 검색한다.

find / -type f \( -perm -4000 -o -perm -2000 \)
find / -type f \( -perm -4000 -o -perm -2000 \) | diff -setuidlist
(검색된 setuid, setgid를 기존에 작성한 목록과 비교하여 새로 추가 된 것이 있는지를 확인한다.)


"System" 카테고리의 다른 글
  • ASCII Code의 CRLF 제거 방법 (0)2009/09/04
  • Linux / Unix Command: signal (0)2007/07/18
  • 시스템 관리자를 위한 기초 명령어 활용법 (0)2007/06/22
  • 프로세스정보 얻어오기 (0)2007/05/14
  • 여러 가지 설정으로 공격으로부터 시스템을 안전하... (0)2007/05/10
2007/06/22 14:05 2007/06/22 14:05
Posted by webdizen
Tags awk, egrep, fgrep, find, grep, 리눅스, 시스템 관리자, 유닉스
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/3055

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 파티션
  • WDSL
  • 절전 모드
  • Network Simulator 2
  • 로깅
  • 컬럼 정보
  • Data Warehouse
  • 퇴계관
  • 대학원
  • Gateway
  • 강대라이크
  • nmap
  • 검색
  • LastError
  • 쿼리 커버
  • JavaFX
  • 로그
  • Website
  • 바탕화면
  • Animation

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  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      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.