Pentesting/Linux

리눅스 명령어 정리 (2)

scent2d 2019. 1. 17. 19:27

▷ logger 명령어
:운영체제의 주요 로그 저장 파일(/var/log/messages)에 메시지를 저장한다.
[문법]: logger [옵션] [메시지]
[옵션]: -f 파일에 로그를 기록한다, -i 작성되는 로그마다 프로세스ID를 포함, -p 우선권이 있는 메시지를 저장

[TEST]
>logger -i 'date' Shell Scripting!
>tail /var/log/messages
...
Dec 19 06:54:32 localhost root[30738]: 2014.12.19. (금) 06:54:32 KST Shell Scripting!
...

▷ lsof 명령어
:lsof(list open files) 명령어는 시스템에서 열린 파일 목록을 알려주고 사용하는 프로세스,
디바이스 정보, 파일의 종류 등을 표시
[문법]: lsof [옵션]
[옵션]: -u 사용자를 지정하여 출력, -i 특정 포트를 사용하는 프로세스를 출력(단일포트 lsof -i TCP:80)
(포트범위: lsof -i TCP:22-1024), -c 특정 명령어가 사용하는 프로세스를 출력(lsof -c httpd)
+D 지정된 디렉터리 하위에 열려 있는 프로세스를 출력(lsof +D /home/user1)

[TEST]
>lsof -i TCP:80
80번포트 사용하는 프로세스 출력....
....

>lsof /var/log/messages
시스템의 로그들이 저장되는 messages 파일을 사용한 프로세스를 출력한 결과...
....


▷ netstat 명령어
:현재 시스템에 연결되어 있는 네트워크 연결 상태 및 포트 정보를 표시
[문법]: netstat [옵션]
[옵션]: -r 커널의 라우팅 테이블 정보를 출력, -i 네트워크 인터페이스 테이블 정보를 출력
-g 멀티캐스트 그룹 정보를 출력, -s 네트워크 통계 요약을 출력, -M 매스커레이드된 연결 목록을 출력
-v 상세정보 출력, -n 숫자 형태의 IP주소로 출력, -c 매초마다 정보를 최신화하여 출력
-p 소켓을 사용하는 프로그램의 PID를 출력, -l LISTENING 상태의 소켓을 출력

[TEST]
>netstat
현재 시스템과 연결된 시스템들의 정보를 출력
....

>netstat -nr
숫자형태의 IP주소와 커널의 라우팅 테이블 정보를 출력

▷ nl 명령어
:텍스트 형태의 파일을 읽어 행 번호를 부여한다.
[문법]: nl [옵션] [텍스트 형태 파일]
[옵션]: -b 본문에 번호를 붙이는 데 스타일을 사용, -d 논리적 페이지를 구분, -f 꼬리말에 번호를 붙힘
-h 머리말에 번호를 붙힘, -i 각 줄의 줄 번호를 증가, -l 지정된 숫자만큼의 줄은 하나로 취급

[TEST]
>nl /etc/passwd

▷ ntpdate 명령어
:지정된 time 서버로부터 시간 정보를 동기화
[문법]: ntpdate [옵션] [time 서버 주소]
[옵션]: -d 시간 동기화 실패 시 원인을 위해 디버깅을 할 때 활용, -q 시스템의 시간을 설정하지 않고
시간정보만을 확인, -s 표준 시간 정보를 시스템 로그에 전달, -t timeout 대기 시간을 설정, -v 상세정보

[TEST]
>ntpdate time.nuri.net
시간동기화 실패
>ntpdate -d time.nuri.net
실패 디버깅 로그 출력...
...
시간동기화 실패


▷ ping 명령어
:IMCP 프로토콜을 이용하여 네트워크에 연결된 호스트의 연결 상태를 확인하고, 호스트 간에 패킷이
왕복된 시간을 측정하여 표시
[문법]: ping [옵션] [호스트주소]
[옵션]: -b 브로트캐스트 주소로 패킷을 보냄, -c 지정된 숫자만큼만 패킷을 보냄, -i 지정된 간격으로 패킷을 보냄

[TEST]
>ping -c 5 192.168.159.130
ping~
ping~
ping~
ping~
ping~ 5번 ....

▷ pmap 명령어
:시스템의 프로세스 ID를 기준으로 메모리 맵 정보를 출력
[문법]: pmap [옵션] [PID]
[옵션]: -x 확장된 형식으로 출력, -d 디바이스 형식으로 출력, -q 간단한 요약 정보를 출력

[TEST]
>pmap -x 2755    (2755는 PID)
....출력

▷ pr 명령어
:텍스트 파일을 인쇄가 가능한 표준 출력 형식으로 변환

[문법]: pr [옵션] [파일]
[옵션]: -D 머리말의 날짜 형태를 지정, -e 텝의 너비를 지정, -J 모든 행을 합침
-s 열 구분자를 지정, -n 행의 번호를 지정, -t 머리말과 꼬리말을 생략

[TEST]
>ps -ef | pr
시스템의 프로세스 상태를 출력할 수 있도록 ps명령어의 결과를 pr명령어로 파이프 지정한 예제..

▷ ps 명령어
:현재 시스템의 프로세스 상태를 출력

[문법]: ps [옵션]
[옵션]: -A 모든 프로세스를 출력, -e 커널 프로세스를 제외한 모든 프로세스를 출력
-C 지정된 명령어에 대한 정보를 출력, -G 지정된 그룹 ID에 대한 정보를 출력
-t tty를 지정하여 정보를 출력, -f 모든 형태의 정보를 출력, -H 프로세스를 계층형으로 출력
-m 쓰레드 정보를 출력, -u 사용자 ID를 지정

[TEST]
> ps -u nobody -f
nobody 사용자의 모든 형태의 정ㄹ보를 확인.
...

▷ pwd 명령어
:현재 작업중인 디렉토리 명 출력
 
▷ route 명령어
:네트워크 라우팅 테이블을 출력하거나 설정
[문법]: route [옵션] [명령]
[옵션]: -v 자세한 정보를 출력, -n 숫자인 IP주소 형태로 출력, -e 라우팅 테이블 정보를 확장된 형태로 출력
-F 시스템 커널의 FIB 라우팅 테이블 정보를 출력
[명령어]
add IP주소를 입력한다
gw 게이트웨이를 설정한다
netmask 넷마스크를 설정
dev 장치를 설정
mss 최대 TCP세그먼트 사이즈를 설정
del IP주소를 삭제

[TEST]
>route -n
라우팅 정보 확인..

>route add default gw 192.168.159.10
default 게이트웨이를 추가

>route del default
default 게이트웨이를 삭제

▷ script 명령어
:터미널에서 수행하는 작업들을 텍스트 형식으로 저장

[문법]:script [옵션] [저장파일]
[옵션]:-a 기존 파일에 작업 내용을 추가, -f 출력 화면을 깨끗하게 정리, -q 메시지를 출력하지 않음

※ 특정 사용자 profile에 script 명령어를 추가하여 특정 계정 사용자들이 로그인해서 작업한 내용을
확인해야 할 때도 유용하게 활용 가능.
[TEST]
>script script.log
Script started, file is script.log
>ls
.....
>ps
.....
>exit
Script done,file is script.log
>pr script.log | more
위 명령어들과 출력들이 다 저장됨

▷ sort 명령어
:텍스트 파일을 행 단위로 정렬
[문법]: sort [옵션] [파일]
[옵션]: -d 알파벳과 숫자를 사전순으로 정렬, -f 대소문자를 구별하지 않는다 ,-r 내림차순으로 정렬
-m 이미 정렬된 파일을 병합, -t 필드를 구분하는 구분자를 지정, -k 각 행의 지정된 필드를 기준으로 정렬

[TEST]
>ls -al | sort -rk 5 
..파일 용량순 내림차순 정렬...

▷ tail 명령어
:텍스트 파일의 마지막 행의 내용부터 출력
[문법]:tail [옵션] [파일]
[옵션]:-c 지정된 마지막 바이트 만큼 내용을 출력, -f 명령을 종료하지 않고 추가되는 내용을 실시간 출력
-n 마지막 행부터 n행 까지의 내용을 출력

[TEST]
>tail -7 /var/log/messages
마지막 행에서 7번째 행까지의 내용을 출력

▷ tar 명령어
:여러 파일들을 하나의 파일로 묶는다.
[문법]:tar [옵션] [생성파일.tar] [묶을 대상 파일]
[옵션]: -c tar파일을 만들 때 사용, -x 묶어진 파일을 해제할 때 사용, -v 파일을 묶거나 해제할 때
파일들의 이름과 크기를 표시, -f 사용할 tar 파일을 지정, -t 묶여진 tar 파일의 내용물을 출력

[TEST]
>tar -cvf ch_4.tar /test/ch_4
-cvf 옵션을 사용하여 /test/ch_4의 파일 및 디렉토리를 ch_4.tar로 묶는 작업
>tar -xvf ch_4.tar
-xvf 옵션을 사용하여 묶은 것을 해제

▷ time 명령어
:특정 프로세스나 명령어에 사용된 시스템 자원 정보를 출력
[문법]: time [옵션] [명령어]
[옵션]: -f 지정한 출력 형식에 맞춰 표시
-p 지정된 형식으로 정보를 출력..
* %(형식)의 의미
%E 경과된 시간
%S 커널 모드에서 프로세스가 사용한 CPU 시간
%U 유저 모드에서 프로세스가 사용한 CPU 시간
%P 작업 시 사용한 CPU 작업량(%)
....
....
....
(생략)

▷ touch 명령어
:0바이트의 빈 파일을 생성하거나, 기존 파일이 있을 경우 파일의 수정 시간을 현재 시간으로 변경
[문법]: touch [옵션] [파일]
[옵션]: -a 최근 파일 사용 시간을 변경, -c 파일이 이미 존재하지 않는다면 새로 만들지 않는다
-t 현재 시간 대신 지정된 시간을 변경, -m 최근 파일 변경 시간을 변경

[TEST]
>touch -t 200206252310 touch.test
-t옵션을 이용하여 기존의 touch.test 파일의 생성 또는 변경 시간을 2002년 6월 25일 23시 10분으로 조정

▷ tr 명령어
:특정 문자를 다른 문자로 변경할 때 사용되며, 대부분 재지정 시 활용
[문법]: tr [옵션] [문자열1] [문자열2]
[옵션]: -d 지정된 문자열을 삭제, -s 지정된 문자열에서 반복되는 문자를 삭제, -t 문자열1을 문자열2의 길이로 자름

[TEST]
>more tr.test
LINUX_UNIX_Shell Script
>tr "a-z" "A-Z" < tr.test
LINUX_UNIX_SHELL_SCRIPT

>more tr.test
linux_UNIX_Shell Script
>tr -d "_" < tr.test
LinuxUNIXShell Script

▷ traceroute 명령어
:네트워크 경로를 확인하기 위해 패킷이 거쳐 가는 경로를 추적하여, 경로 중에 네트워크 부하가 높은
곳을 찾을 때 활용

[문법]:traceroute [옵션] [호스트주소]
[옵션]: -m 홉 수를 지정, -n IP 주소가 안보이도록 설정, -q 패킷 수를 지정, -w timeout을 지정

▷ uptime 명령어
:평균 시스템 부하 정보를 출력
[TEST]
>uptime
22:10:33 up 2 days, 20:53, 3users, load average: 0.00, 0.00, 0.00
시스템이 시작된 시간, 현재 사용자 수, 평균 부하량을 확인..

▷ vmstat 명령어
:가상 메모리 상태를 확인
[문법]: vmstat [옵션]
[TEST]
> vmstat 1 3
1초마다 3번점검..
....

[컬럼별 의미]
prcos - r : cpu 접근 대기 중인 프로세스 수
- b : 인터럽트가 불가능한 프로세스 수
memory - swpd : 사용된 가상 메모리 양
 - free : 여유 메모리
 - buff : 버퍼에 사용된 메모리
 - cache : 캐시에 사용된 메모리
swap - si : 디스크로부터 스왑된 메모리 양
 - so : 디스크에 스왑된 메모리 양
io - bi : 블록 장치로 보낸 블록
 - bo : 블록 장치에서 받아온 블록
system - in : 초당 인터럽트 수
 - cs : 초당 컨텍스트 스위칭 작업 수
cpu - us : 커널 코드가 아닌 작업의 구동 시간
- sy : 커널 코드의 작업 구동 시간
- id : 유휴 대기 시간
- wa : 입출력을 위한 대기 시간
- st : 가상머신으로부터 손실된 시간

▷ w 명령어
:시스템에 로그인한 사용자의 정보를 출력
[문법]: w [옵션]
[옵션]: -h 헤더 정보를 출력하지 않는다, -s 간략한 요약 정보를 출력한다.