-
리눅스 명령어 정리 (1)Pentesting/Linux 2019. 1. 17. 19:26▷ at 명령어:명령어나 스크립트 파일이 특정 시간에 실행되도록 예약하는 기능을 수행한다. 시스템 사용이 적은 시간 또는 필요한 시간에 지정된 작업을 자동으로 처리하고자 할 때 유용하다.[문법]: at [옵션][시간][날짜][+증가시간][옵션]: -q queue이름을 지정, -m 작업이 완료될 때 사용자에게 메일을 보낸다 , -f file에서 작업 명령을 읽는다-l 예약된 작업 목록을 보여준다 , -v 작업이 수행될 시간을 보여준다 , -d 예약된 작업을 삭제한다.[시간]: hh:mm 시간:분으로 설정한다(예: 23:10)[날짜]: yyyy-mm-dd 년-월-일 구서으로 표현한다, today,tomorrow 오늘, 내일로 지정할 때 사용한다.[TEST]>at 00:40 2015-03-08>at>echo "This Time is">at>date>at><EOT> // ctrl + djob 2 at 2015-03-08 00:40>at -l1 2015-03-8 00:40 a root2 2015-03-8 00:40 a root[atd 데몬]>/etc/init.d/atd start (데몬 시작)▷ chmod 명령어:파일, 디렉토리, 장치 등의 접근 권한(퍼미션)을 바꾼다.[문법]: chmod [옵션][퍼미션 값][옵션]: -R 특정 디렉토리 안의 모든 파일의 접근권한을 변경할 때 사용[퍼미션]-/---/---/---1:파일의 타입, 디렉토리는 d, 표준 파일은 -, 링크파일은 l로 표시2:소유자의 퍼미션3:소유자의 그룹 퍼미션4:기타 모든 사용자의 퍼미션r:읽기,4w:쓰기(수정),2x:실행,1[TEST]>chmod 755 file▷ chown 명령어:파일 소유자 및 소유 그룹을 바꾸기 위한 명령어, root만이 명령어를 사용할 수 있다.[문법]: chown [옵션] [소유자].[그룹][옵션]: -R 특정 디렉토리 안의 모든 파일의 접근권한을 변경할 때 사용[TEST]file의 소유자와 그룹을 root에서 user1로 변경하는 내용>chown user1.user1 file>ls -al-rwxr-xr-x 1 user1 user1 103 12월 18 01:30 file▷ cmp 명령어:파일을 비교하여 서로 다른 부분을 알려주는 명령어로 다음에 살펴볼 diff명령어와 유사하다. 차이점이라면,diff명령어는 두 파일간의 차이점을 상세히 표시하지만 cmp 명령어는 차이점의 유무만 나타낸다.[문법]: cmp [옵션] file1 file2[옵션]: -l 각 파일의 서로 다른 바이트 번호를 나타낸다 , -s 메시지에 의한 표시 대신 차이가 없으면 0, 차이가 있으면 1[TEST]>cat cmp1Shell Script>cat cmp2Linux / UNIX Shell Script>cat cmp3Shell Script differ>cmp cmp1 cmp2cmp1 cmp2 differ:byte 1, line 1>cmp cmp1 cmp3cmp1 cmp3 differ:byte 13, line 1▷ col 명령어:텍스트 파일 내 개행(특수) 문자와 공백 등을 변환하는 필터 역할. 즉, \n,\r 문자를 \n 문자로 변환하거나공백 문자를 탭 문자로 변환할 때 활용된다.[문법]: col [옵션][옵션]: -b 백스페이스 문자는 출력하지 않고 백스페이스 문자와 연결되는 마지막 문자만 출력,-f 밑줄 속성을 가진 문자열을 변환하지 않는다 , -h 중복되는 공백을 출력하지 않고 탭으로 변환한다.-x 중복되는 공백 문자를 그대로 둔다 , -l 숫자 : 버퍼 값을 지정하여 메모리에 상주할 수 있는 최대 줄 수를 지정[TEST]col 명령어를 이용하여 col의 man 페이지를 파일로 변환하여 저장>man col | col > col.man>more col.man▷ colcrt 명령어: 밑줄(_)을 감추거나 변환한다.[문법]: colcrt [옵션][옵션]: - 밑줄 속성이 있는 문자열을 표시하지 않는다 , -2 밑줄 속성이 있는 문자열 다음 줄에 하이픈(-)을 포함하여 표시한다[TEST]>cat colcrt.testLinux_UNIX_Shell Script>colcrt colcrt.testLinux UNIX Shell Script▷ cp 명령어:특정 파일을 현재 디렉터리나 다른 디렉터리로 복사한다.[문법]: cp [옵션] 파일명1 파일명2[옵션]: -a 원본 파일의 속성, 구조 등을 그대로 유지하며 복사, -b 복사할 때 같은 이름의 파일이 있으면 백업본 만듬-d 복사할 때 파일이 심볼릭 링크 파일이면 심볼릭 링크의 대상 파일을 복사,-f 복사 대상 파일이 이미 있으면 지우고 복사-i 복사 시 같은 파일이 있으면 덮어쓸지를 확인, -P 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사-r 디렉터리의 하위 디렉터리의 파일 및 디렉터리까지 복사[TEST]>cp -rP ./ch_5 ./cp_ch_5▷ cut 명령어:텍스트 파일이나 파이프된 결과 중에 지정된 부분만 표시. 시스템 관리 실무에서 awk 명령어와 더불어 텍스트파일 출력 편집용으로 많이 사용[문법]: cut [옵션][옵션]: -b 바이트 단위, -c 문자 단위로 나타냄, -d 기본 필드 구분자인 탭 대신 지정된 구분자를 이용-f 지정된 필드만 구성하여 표시, -s 필드 구분자에 포함되어 있지않은 행은 표시하지 않음.-b, -c, -f 옵션에서는 숫자 범위를 지정A A번째, A- A번째부터 , A-B A부터 B까지, -B B까지[TEST]/etc/passwd에서 시스템에 등록되어 있는 계쩡과 연계된 쉘 부분만 표시. 이를 위해 cut 명령어 사용기본 구분자인 탭 대신 콜론(:)을 구분자로 하여 1번과 7번 필드를 표시하도록 옵션>cut -d ":" -f1,7 /etc/passwdroot:/bin/bashbin:/sbin/nologindaemon:/sbin/nologin............/etc/passwd에서 시스템에 등록되어 있는 계정명,UID,GID 정보를 표시하는 명령어와 옵션 -f 옵션 뒤에 1번필드와 3번에서 4번 필드까지의 범위를 지정>cut -d":" -f1,3-4 /etc/passwdroot:0:0~~(중략)user101:510:510user102:511:511▷ date 명령어:시스템의 날짜와 시간을 알려주거나 설정[문법]: date [옵션] [+형식][옵션]: -d 지정된 날짜를 표시, -f 지정한 파일에서 각 행에 대한 날짜를 표시-r 지정한 파일이 마지막 수정된 날짜를 표시, -s 지정된 값으로 시간을 맞춤[형식]: %d 월의 일(01~31), %j 년의 일(01~366), %k 24시간의 시간(0~23), %l (12시간의 시간 0~12)%m 년의 월(1~12), %n 새로운 줄 입력, %p AM / PM[TEST]>date2014.12.19. (금) 02:31:02 KST>date +%j353>date +%m-%d-%Y12-19-2014▷ df 명령어:파일 시스템의 디스크 공간을 확인해서 표시[문법]: df [옵션][옵션]: -a 모든 파일 시스템을 표기, -B 지정된 크기를 블록 단위로 정하여 용량을 표시-h 사람이 인지하기 좋은 kilo,mega,giga 단위로 표시, -H 1KB를 1,000 단위로 산출하여 표시-i 아이노드의 남은 공간, 사용 공간, 사용율 정보를 표시, -k 1KB단위로 표시[TEST]현재의 모든 파일 시스템을 사람이 인지하기 좋은 단위로 산출하여 표시>df -ah▷ diff 명령어:파일을 비교하여 다른 부분을 표시[문법]: diff [옵션] file1 file2[옵션]: -a 모든 파일을 텍스트 파일로 취급하여 행간 비교, -b 중복된 공백을 무시-i 대소문자를 구별하지 않음, -H 큰 파일을 빠르게 처리하기 위해 사용-l pr명령어를 통해 페이지를 출력, -L 파일 이름 대신 지정된 라벨을 사용-N 존재하지 않는 파일이면 빈 파일로 인식, -r 비교 대상의 하위 디렉토리의 파일까지 비교-s 비교하는 대상의 파일이 서로 같은 경우 비교 결과가 같음을 출력-w 각 줄을 비교할 떄 공백은 무시▷ domainname 명령어:운영체제에 설정된 도메인명 정보[문법]: domainname [옵션] 도메인명[옵션]: -s 간단한 호스트명 출력, -a 알리아스를 출력, -i 호스트IP주소 출력, -f 전체 호스트명 출력-d DNS 도메인명을 출력[TEST]>domainname>domainname -flocalhost.localdomain>domainname shell.co.kr>domainname▷ du 명령어:현재 디렉토리의 사용량을 표시, default값은 MB단위로 출력[문법]: du [옵션][옵션]: -a 현재 디렉토리의 모든 파일과 하부 디렉토리의 사용량을 출력, -b 바이트단위로 사용량 출력-h 사용자가 보기 쉬운 형태로 정보를 표시, -k 사용량을 1KB 형태로 표시, -s 간단히 총 사용량 표시▷ echo 명령어:지정된 문자열을 출력. 현재 쉘의 환경 변수를 확인할 때도 활용하며, 쉘 스크립트 작성 시 각종문자나 기호를 출력하거나 재지정을 통해 로그를 만들 때에도 많이 활용[문법]: echo [옵션] [출력 문자열][옵션]: -n 화면상의 커서를 다음 줄로 옮기는 역할, -e \(옵션)에 설정된 기능을 수행※ \(옵션) 설정의 의미\a : 경고음(벨) 소리를 낸다\b : 백스페이스이다\c : 마지막 개행 문자를 사용하지 않는다\n : 개행 문자를 출력한다\t : 수평 탭이다\v : 수직 탭이다\\ : 백슬래시이다.[TEST]echo 명령어를 이용하여 현재 쉘의 환경 변수 값을 확인. echo와 '$환경변수명'을 실행하여 등록되어있는 정보를 확인>setBASH=/bin/bashBASH_ARGC=()BASH_ARGV=()BASH_LINENO=()BASH_SOURCE=()BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-rehat-linux-gnu")BASH_VERSION='3.2.25(1)-<wbr />release'COLORS=/etc/DIR_COLORS.xtermCOLUMNS=168CVS_RSH=ssh....USER=root_=/root>echo $USERroot>echo Shell ScriptShell Script>echo -n Shell ScriptShell Script[root@localhost ~]#>echo -e "\a Shell Script"Shell Script▷ find 명령어:운영체제에서 조건에 맞는 파일을 찾고자 할 때 사용한다.[문법]: find [경로] [조건식] [액션][조건식]-name : 파일명과 일치하는 파일을 찾을 수 있도록 지정-atime : 지정된 날짜 이전에 액세스된 파일을 찾는다-ctime : 지정된 날짜 이전에 퍼미션이 변경된 파일을 찾는다.-atime : 지정된 날짜 이전에 파일 수정 날짜가 변경된 파일을 찾는다.-size : 파일의 크기가 지정된 숫자만큼의 블록인 파일을 찾는다. 바이트 단위로 검색을 하려면 지정된 숫자 뒤에 c를 붙힌다-group : 지정된 그룹 소유의 파일을 찾는다.-user : 지정된 유저 소유의 파일을 찾는다.-type : 파일의 종류가 어떤 형태인지 검색 (일반파일f,블록디바이스b,캐릭터디바이스c,심볼릭l,<wbr />디렉토리d)-perm : 지정된 퍼미션이 부여된 파일을 찾는다.[액션]-delete : 검색된 파일을 삭제-exec 명령어; : 검색 후 지정된 명령어를 실행-print : 검색된 파일들의 전체 경로를 표준 출력으로 출력[TEST]/test/ch_4 디렉토리에서 root가 소유한 파일을 찾기.>find /test/ch_4 -user root -print/test/ch_4/test/ch_4/5-6.sh........./test/ch_4 디렉토리에서 .bak이 포함된 파일을 찾아 삭제. 이를위해 '-exec rm {} \;' 액션을 이용>ls -al합계 77......파일들.......>find /test/ch_4 -name *.bak -exec rm {} \;합계 76.bak 파일이 지워짐▷ free 명령어:운영체제에서 사용하는 메모리와 사용하지 않는 메모리를 물리적 메모리와 스왑 메모리 등으로 구분하여 전체적인 현황을 살펴볼 때 유용[문법]: free [옵션][옵션]: -b 메모리의 양을 Byte로 표시, -k 메모리의 양을 KB단위, -m 메모리의 양을 MB단위-t 총계과 포함된 줄을 출력, -s 지정된 초마다 출력하게 한다.[TEST]-m 옵션과 -s옵션을 사용하여 3초단위로 명령을 수행>free -m메모리표시>free -s 3메모리표시메모리표시메모리표시...▷ ftp 명령어:네트워크상에서 파일을 서로 주고받을 수 있도록 하는 서비스 프로토콜[문법]: ftp [옵션] 호스트네임 / 주소[옵션]: -i 여러 개의 파일 전송 중 ftp 프롬프트의 상호작용을 비활성화, -t 패키 추적을 가능하도록 설정[내장 명령어]-ascii : 주고받는 파일을 텍스트 형식 파일로 설정-binary : 주고받는 파일을 바이너리 형식 파일로 설정-case : 파일의 이름을 대소문자 구별하지 않도록 설정-ls(dir) : 서버의 파일 및 디렉터리 목록을 나열-cd : 서버의 디렉토리로 이동-lcd : 로컬(자신의 시스템)의 디렉토리를 변경-get : 서버에서 하나의 파일을 다운로드-mget : 서버에서 여러 개의 파일을 다운로드-put : 로컬(자신의 시스템)에 있는 하나의 파일을 서버로 업로드-mput : 로컬(자신의 시스템)에 있는 여러 개의 파일을 서버로 업로드-delete : 서버에서 하나의파일을 삭제-mdelete : 서버에서 여러 개의 파일을 삭제-mkdir : 서버에 새로운 디렉터리 생성-rmdir : 서버에 있는 디렉토리를 삭제-!명령어 : 로컬(자신의 시스템)의 명령어를 실행-quit/bye : ftp를 종료[TEST]>ftp 192.168.159.130....>name:root>password: .......ftp>ftp> 프롬프트 상에서 내장 명령어 open을 이용하여 접속하는 방법으로 'open IP주소'로도 동일하게 접속 가능>ftp>ftp>open 192.168.159.130>name:root>password: .........ftp>ftp 내장 명령어를 이용하여 서버의 /test 디렉토리로 이동하고, 파일 및 디렉토리 목록을 나열ftp> cd /test250 Directory successfully changed.ftp> ls...............ftp>내장명령어 lcd를 이용하여 로컬 시스템의 /tmp 디렉토리로 이용. 그리고 get 명령어를 이용하여서버의 script.log를 로컬 시스템의 /tmp로 다운로드 받는다. 그런 다음에 '!명령어'를 이용하여로컬 시스템의 명령어를 실행. 그리고 !ls 명령어로 script.log파일이 다운로드 된것을 확인ftp> lcd /tmplocal directory now /tmpftp> get script.log........okftp> !ls /tmpscript.logftp>▷ ifconfig 명령어:운영체제의 네트워크 인터페이스의 설정을 확인[문법]:ifconfig [네트워크 인터페이스] [타입] [옵션] [설정값][옵션]:-a: -a 옵션과 함께 실행하여 네트워크 인터페이스에 설정되어 있는 정보를 확인[TEST]>ifconfig -aeth0 .................lo ............sit0 ..........ip변경등 주요 정보 설정을 처리하는 자동화된 프로그램이나 스크립트를 제공. 그러나 콘솔 접속을통해 IP를 설정해야 할 때 ifconfig 명령어를 유용하게 사용>ifconfig eth0 192.168.0.100 netmask 255.255.255.0▷ grep 명령어:텍스트 형식으로 된 파일의 내용이나 명령어의 실행 결과를 특정 문자나 단어로 검색, 이 명령어는단독으로 쓰이기보다 다른 명령어에 파이프 형태로 결합하여 사용됨.[문법]: grep [옵션] [패턴][옵션]-c 해당 패턴이 포함된 행의 개수를 출력-i 패턴의 대소문자를 구별 없이 검색-n 해당 패턴이 포함된 행의 행 번호를 포함하여 출력-v 해당 패턴을 제외하고 출력[정규표현식]^ 행의 첫 시작을 의미$ 행의 끝을 의미. 한 글자를 의미* 문자열을 의미[] []안의 문자열 중 하나를 선택[^] 정규표현식 []와 반대의 개념으로 [^] 안의 문자열을 제외한다\ 특수 문자를 문자로 인식[TEST]>more 5-8.sh | grep '$Var'$Var 잇는 모든 행 출력......>more 5-8.sh | grep '[0-9]'숫자가 포함되어 있는 모든 행 출력........파이프를 이용하여 test 디렉토리의 파일 및 디렉토리 목록 중에서 실제 존재하는 디렉터리 목록만 나열하도록 한 예제이다. 디렉터리는 d로 시작하므로 행의 시작이 d인 행을 표시하기 위해 ^d 옵션을 사용했다.하지만 현재 디렉토리를 나타내는 .와 상위 디렉토리를 나타내는 ..도 포함되므로 이 결과를 추가적으로 제거하기 위해 [.] 옵션을 사용했다.>ls -al | grep '^d' | grep -v '[.]'drwxr-xr-x 2 .......디렉토리만 출력........test디렉토리에서 .log 파일만 검색하기 위해 \을 이용하여 .을 문자로 인식하게 하고 $를 이용하여행의 마지막 부분을 기준으로 문자를 검색하도록 했다.>ls -al | grep '\.log$'.log 파일만 검색.......[정규표현식 문법]- . / 문자 / 1개의 문자와 일치한다. 단일행 모드에서는 새 줄 문자를 제외- \ / 이스케이프 / 특수 문자를 식에 문자 자체로 포함- | / 선택 / 여러 식 중에서 하나를 선택. 예를 들어, abc|adc는 abc와 adc문자열을 모두 포함- ^ / 부정 / 문자 클래스 안의 문자를 제외한 나머지를 선택. 예를 들어, [^abc]d는 ad,bd,cd는 포함하지않고, ed, fd 등을 포함. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미.- [] / 문자클래스 / [] 사이의 문자 중 하나를 선택한다 | 를 여러 개 쓴 것과 같은 의미. 예를들어,[abc]d는 ad,bd,cd를 뜻한다. 또한, - 기호와 함께 쓰면 범위를 지정 가능. [a-z]는 a부터 z까지 중 하나,[1-9]는 1부터 9까지 중 하나를 의미- () / 하위식 / 여러 식을 하나로 묶을 수 있다. abc|adc와 a(b|d)c는 같은 의미- * / 0회이상 / 0개 이상의 문자를 포함. a*b는 b, ab, aab, aaab를 포함한다.- + / 1회이상 / a+b는 ab, aab, aaab를 포함하지만 b는 포함하지 않는다.- ? / 0또는1회 / a?b는 b와 ab를 포함한다.- {m} / m회 / a{3}b는 aaab만 포함한다.- {m,} / m회 이상/ a{2,}b는 aab, aaab, aaaab를 포함한다. ab는 포함되지 않는다.- {m,n} / m회 이상 n회 이하 / a{1,3}b는 ab,aab,aaab를 포함하지만 b나 aaaab는 포함하지 않는다.
'Pentesting > Linux' 카테고리의 다른 글
peda 설치 및 명령어 (0) 2019.11.14 웹서버 access 로그 분석 구문 (0) 2019.10.23 간단한 명령어 반복 실행 스크립트 (0) 2019.08.07 리눅스 명령어 정리 (3) (0) 2019.02.13 리눅스 명령어 정리 (2) (0) 2019.01.17 댓글