ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 명령어 정리 (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 + d
    job 2 at 2015-03-08 00:40

    >at -l
    1 2015-03-8 00:40 a root
    2 2015-03-8 00:40 a root

    [atd 데몬]
    >/etc/init.d/atd start (데몬 시작)

    ▷ chmod 명령어
    :파일, 디렉토리, 장치 등의 접근 권한(퍼미션)을 바꾼다.
    [문법]: chmod [옵션][퍼미션 값]
    [옵션]: -R 특정 디렉토리 안의 모든 파일의 접근권한을 변경할 때 사용
    [퍼미션]
    -/---/---/---
    1:파일의 타입, 디렉토리는 d, 표준 파일은 -, 링크파일은 l로 표시
    2:소유자의 퍼미션
    3:소유자의 그룹 퍼미션
    4:기타 모든 사용자의 퍼미션

    r:읽기,4
    w:쓰기(수정),2
    x:실행,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 cmp1
    Shell Script
    >cat cmp2
    Linux / UNIX Shell Script
    >cat cmp3
    Shell Script differ
    >cmp cmp1 cmp2
    cmp1 cmp2 differ:byte 1, line 1
    >cmp cmp1 cmp3
    cmp1 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.test
    Linux_UNIX_Shell Script
    >colcrt colcrt.test
    Linux 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/passwd
    root:/bin/bash
    bin:/sbin/nologin
    daemon:/sbin/nologin
    ............

    /etc/passwd에서 시스템에 등록되어 있는 계정명,UID,GID 정보를 표시하는 명령어와 옵션 -f 옵션 뒤에 1번
    필드와 3번에서 4번 필드까지의 범위를 지정
    >cut -d":" -f1,3-4 /etc/passwd
    root:0:0
    ~~(중략)
    user101:510:510
    user102: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]
    >date
    2014.12.19. (금) 02:31:02 KST
    >date +%j
    353
    >date +%m-%d-%Y
    12-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 -f
    localhost.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와 '$환경변수명'을 실행하여 등록되어 
    있는 정보를 확인
    >set
    BASH=/bin/bash
    BASH_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.xterm
    COLUMNS=168
    CVS_RSH=ssh
    ....
    USER=root
    _=/root

    >echo $USER
    root

    >echo Shell Script
    Shell Script
    >echo -n Shell Script
    Shell 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 /test
    250 Directory successfully changed.
    ftp> ls
    ....
    .....
    ....
    ..
    ftp>
    내장명령어 lcd를 이용하여 로컬 시스템의 /tmp 디렉토리로 이용. 그리고 get 명령어를 이용하여 
    서버의 script.log를 로컬 시스템의 /tmp로 다운로드 받는다. 그런 다음에 '!명령어'를 이용하여
    로컬 시스템의 명령어를 실행. 그리고 !ls 명령어로 script.log파일이 다운로드 된것을 확인

    ftp> lcd /tmp
    local directory now /tmp
    ftp> get script.log
    ...
    ...
    ..
    ok
    ftp> !ls /tmp
    script.log
    ftp>

    ▷ ifconfig 명령어
    :운영체제의 네트워크 인터페이스의 설정을 확인
    [문법]:ifconfig [네트워크 인터페이스] [타입] [옵션] [설정값]
    [옵션]:-a: -a 옵션과 함께 실행하여 네트워크 인터페이스에 설정되어 있는 정보를 확인

    [TEST]
    >ifconfig -a
    eth0 .................

    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

    댓글

Designed by Tistory.