SYSTEM/UNIX|LINUX Server 보안

UNIX 기초 (1) cat, vi, find 명령어 정리

마띠(쥔장) 2021. 3. 5. 10:24

▨ 1. cat 명령어로 파일 내용 확인

cat은 텍스트 파일 내용 출력/쓰기/복사 시 사용되며 주로 텍스트 파일 내용을 표준 출력장치로 출력하여 확인한다. 

1. 파일을 열어 내용 출력

cat [파일경로/파일명]

2. 파일 생성/덮어쓰기하여 내용 입력

같은 이름의 파일이 있는 경우 파일을 덮어쓰고 새로 내용을 입력한다. 같은 이름의 파일이 없는 경우 파일을 새로 만들고 내용을 입력한다.

cat > [파일경로/파일명]

3. 파일 생성/이어쓰기하여 내용 입력

같은 이름의 파일이 있는 경우 파일을 기존 파일 내용 밑에 이어 내용을 입력한다. 같은 이름의 파일이 없는 경우 파일을 새로 만들고 내용을 입력한다.

cat >> [파일경로/파일명]

4. 덧붙여 사용할 수 있는 명령어

| more 많은 내용 출력 시 사용하는 옵션으로 한 줄씩 보려면 [enter키], 한 화면씩 보려면 [spacebar]를 누름
| grep [단어] 특정 단어가 포함된 줄만 출력하는 명령어
| nl 파일 내용이 총 몇 줄인지 출력하는 명령어
| head 파일의 앞 부분 10줄만 출력하는 명령어
| tail 파일의 뒷 부분 10줄만 출력하는 명령어

 

▨ 2. vi 편집기를 사용한 파일 수정

 vi 편집기는 윈도우의 메모장처럼 사용되는 UNIX 표준 편집기이다. 이미 존재하는 파일을 수정하거나 신규 파일을 만들 때 vi 명령을 사용한다.

1. vi 편집기의 3가지 모드

  • 명령모드: 기본 구성 / 텍스트 편집 x / 명령어 수행
  • 편집모드: 텍스트 편집만 가능
  • 확장모드: 종료하거나 저장이 가능한 확장 기능 수행

 

2. vi 편집기 시작

vi [파일경로/파일명]

 

vi 편집기는 명령(normal) 모드로 시작된다. 이 때 키보드의 'i'키를 눌러 편집(insert)모드로 전환할 수 있다. 편집이 끝나면 'Esc'키를 눌러 다시 명령 모드로 전환한다.

편집 중인 문서를 저장할 땐 명령 모드에서 ':w'를 입력하고 수정 완료 후에는 ':q'를 입력하여 프로그램을 종료한다. 파일에 쓰기 권한이 없을 땐 강제 옵션인 '!'를 붙여 문제를 해결한다.

 

▨ 3. find 명령어를 사용한 파일 경로 확인

find 명령어는 원하는 파일을 계속 필터링하며 찾아볼 수 있고 잘못 수정된 파일을 추적할 때도 유용하다. 취약점 진단 시 각 OS별 파일이 존재하는 위치에 차이가 있기 때문에 진단 조치나 설정 여부 확인이 어려운데, find 명령어를 이용해 파일이 위치한 경로를 쉽게 확인할 수 있다.

1. 특정 조건으로 찾기

find 디렉터리위치 -name '파일명조건'
  • 현재 디렉터리에서 'pattern'이라는 파일명을 가진 파일을 찾으려면 #find . -name 'pattern'
  • /usr 디렉터리에서 .html 확장자를 가진 파일을 찾으려면 #find /usr -name '*.html'

2. 디렉터리만 검색하기

find 디렉터리위치 -type d

3. 그 외 예시

(1) 현재 디렉터리 내에서 그룹이 admin이고 심볼릭 링크인 파일 조회

find . -group admin -type l

(2) 현재 디렉터리 내에서 소유자가 mika이며 디렉터리인 것만 검색

find . -user mika -maxdepth 1 -type d

(3) 현재 디렉터리 내에서 OR 옵션(-o)으로 확장자가 .jpg이거나 .html인 파일 검색

find . -name '*.jpg' -o -name '*.html'

(4) 현재 디렉터리 내에서 2일 동안 액세스가 없었던 파일 검색

find . -atime -2

(5) 현재 디렉터리 내에서 액세스가 일어난 지 3일된 파일 검색

find . -atime +3

(6) 현재 디렉터리 내에서 7일 넘게 변경되지 않은 파일 검색

find . -mtime +7

(7) 현재 디렉터리 내에서 변경이 생긴지 30분 지난 파일 검색

find . -mmin +30 -maxdepth 1 -type f

(8) 현재 디렉터리 내에서 'Version'이라는 단어가 들어간 .xml 확장자를 가진 파일 검색

find . -name '*.xml' -exec grep -l 'Version' { } \;

(9) 현재 디렉터리 내에서 .jpg로 끝나지 않는 파일 검색

find . \! -name "*.jpg"

(10) 현재 디렉터리 내에서 test.txt보다 나중에 수정된 파일 검색

find . -newermm test.txt
# find . -newer test.txt

(11) 현재 디렉터리 내에서 사이즈가 100 bytes 이상인 파일 검색

find . -size +100c

 

728x90