Limetime's TimeLine
article thumbnail
반응형

리눅스 기본 명령어 사용법

  • 파일 찾기
    • find
      • find -name apple* : apple로 시작하는 파일 검색
      • 와일드카드
        • * : 들어갈 수 있는 모든거? apple*cat → apple[ ]cat
        • ?
        • %
      • empty : 빈 파일(크기 0)이나 빈 디렉토리 파일 검색
      • -exec : 검색된 파일에 대해 지정된 명령 실행
      • -size : 파일 크기를 이용해 파일 검색 (특정 사이즈 보다 큰 것들 검색할 경우?)
        • find ./ -size 512c : 512 써도 됨. 512바이트인 파일 검색
        • find ./ -size +512 : 512바이트 이상 파일 검색. -512 : 미만 지정 가능
      • -atime : 파일 접근(access) 시각을 기준으로 파일 검색
      • -ctime : 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색
      • -mtime : 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색
        • time 관련 명령어는 침해사고대응에 자주 사용됨
          • 일반적으로 명령어 파일은 변경이 잘 안됨 → 변경되었다? 악성코드가 들어가 있을 확률 높음.
find ./ -name *.txt -delete  # txt파일 검색한 후 삭제
find . -name test -type -f   # test라는 이름의 파일 검색
find . -name dir -type -d    # dir라는 이름의 디렉터리만 검색
find . -empty                # 빈 디렉터리 또는 크기가 0인 파일 검색
find / -maxdepth 1 -name etc # etc라는 파일을 루트(/) 디렉토리에서만 검색
find / -user 427 -print      # 전체 디렉터리에서 소유자의 uid가 427인 파일
find / -cmin -5              # 5분 안에 생성되거나 업데이트 된 파일
  • uid가 0인 사용자가 나타나면 큰일남.
    • find / -user 0 : uid0을 사용하는 계정이 root가 아니라 다른 계정이 있을 경우 침해사고.
  • name을 제일 많이 씀.
  • 프로세스 상태 확인
    • ps [옵션]
      • ps -ef : 표준 구문으로 시스템의 모든 프로세스 표시
      • -u : 실행한 유저와 실행 시간 표시
      • -j : job 형식으로 표시
      • -l : 긴 포맷 출력
      • -m : 메모리 정보 표시
      • -a : 다른 유저의 프로세스 현황 표시
      • -x : 터미널 제어 없이 프로세스 현황 표시
        • 사용자가 로그아웃 한 상태에서도 임의의 프로세서가 동작할 수 있도록.. → 사용자가 돌리고간 프로그램
          • 이러한 프로세스들의 목록을 보여주는 옵션
  • 호스트에 로그인한 사용자 확인
    • who [옵션]-m : who 명령을 실행한 사용자 표시-w, T : 각 사용자의 메시지 설정 상태 출력S
    • -q : 사용자 이름과 사용자 수 출력
    • -l : idle time과 함께 사용자 출력
  • 프로세스 제어
    • kill [옵션] [PID]
      • -1 : -HUP 프로세스를 재활성화함
      • -9 : 프로세스를 강제로 종료
      • -l : 시그널 리스트 확인 (List)

  • 파일 내용 출력
    • cat [옵션] [파일명]
      • -b : 줄번호를 화면 왼쪽에 나타냄 (빈 행 제외)
      • -n : 줄번호를 화면 왼쪽에 나타냄 (빈 행 포함)
      • -s : 연속되는 2개 이상의 빈 행을 한 행으로 출력한다.
      • -v : 제어 문자를 ^형태로 출력한다. (tab, 행 바꿈 문자 제외)
      • -E : 행마다 끝에 $ 문자를 출력한다.
      • -T : 탭(tab) 문자를 출력한다.
      • -A : -vET 옵션을 사용한다.
  • vi
    • 입력모드, 명령모드
      • 명령 → 입력
        • i : 현재 커서 기준 커서가 위치한 곳에서부터 입력모드 진입
        • a : 현재 커서 기준 커서가 위치한 곳 바로 뒤에서부터 입력모드 진입
        • o : 현재 커서 기준 커서가 위치한 아래 라인부터 입력모드 진입
        • I : 현재 커서 기준 라인 맨 앞에서 입력 모드 진입
        • A : 현재 커서 기준 라인 맨 뒤에서 입력 모드 진입
        • O : 현재 커서 기준 윗 라인부터 입력 모드 진입
      • 입력 → 명령
        • esc 키 입력
      • 이동
        • 방향키를 이용해서도 이동 가능
        • h : 왼쪽
        • j : 아래
        • k : 위
        • l : 오른쪽
        • 라인의 숫자를 이용해서 이동 가능
          • :가고싶은 숫자. ex) :4 ⇒ 4번 줄로 이동
        • gg : 맨 위로 이동
        • G : 맨 아래로 이동
        • ctrl + b : 페이지 뒤로 이동
        • ctrl + f : 페이지 앞으로 이동
      • 복사, 붙여 넣기
        • yy : 한 라인 복사
        • y숫자y : 여러 라인(숫자 만큼) 복사 = 숫자yy
        • p : 복사한 라인, 문자 붙여 넣기
        • P : 커서는 이동하지 않고 아래로 복사
      • 삭제
        • dd : 한 라인 삭제
        • d숫자d : 여러 라인 삭제 = 숫자dd : 여러 라인 삭제
      • 되돌리기, 재실행
        • u : 되돌리기 undo
        • ctrl + r : 재실행 redo
  • 긴 내용의 파일 내용, 명령 결과 확인
    • more [옵션][파일명]
      • h : 도움말
      • q : 종료
      • Enter : 1행 아래로 이동
      • Space : 아래로 1페이지 이동
      • = : 현재 위치의 행 번호 표시
      • / : 문자열 검색
      • v : 현재 확인 위치에서 vi 편집기 실행
    • [명령어] | more ⇒ v 옵션 안먹힘
    • more은 아래로 이동은 되는데 위로 이동은 안된다. ⇒ 꺼도 남아 있다.
    • less ⇒ hjkl로 방향 이동 가능, /로 find 가능, vi랑 비슷함. ctrl+f, ctrl+b로 앞 뒤 페이지 이동 가능
      • but, q누르면 나가지고 안보인다.

  • 이전 명령어 목록 보기 및 실행
    • history
      • 계정 별 홈 디렉토리의 .bash_history 파일에 이전 명령어들이 저장됨
      • history [옵션]
        • -c : History List 초기화
        • -d [번호] : 이전 실행 명령어 중 특정 명령어 삭제
        • -w [파일명] : History List를 별도 파일로 저장 (파일명 미지정 시 기존 파일 덮어씀)
        • [n] : 최근에 입력한 명령어 중 최근에 사용한 명령어 n개 출력
      • history 7
      • history 확장 기능
        • !! : 가장 최근 사용한 명령 실행
        • ![n] : History List에서 n번째 명령 실행
        • ![string] : History List에서 입력한 string 값이 존재하는 명령 실행
        • !?[string] : History List에서 입력한 string 값이 존재하는 가장 최근 명령 실행
        • [확장 기능]:p : 실행하지 않고 명령어 확인만 하기 (예시 : !command:p)
        • Ctrl + R : History List 내에서 검색하기

네트워크 구성의 이해

  • 구성 환경 분석
    • 네트워크 구성 방안
      • 특정 범위 내의 IP 주소 대역대에서 중복되지 않은 IP주소를 지정
      • 인터넷을 사용하기 위해 게이트웨이의 IP 주소를 NAT Device의 주소인 192.168.0.2로 구성
      • 영문으로 된 URL IP로 변경을 시켜주는 DNS 서버 IP 주소 구성

  • 0 : Network ID, 대역, 루프백(?), 255 : Broadcast
  • Broadcast : 1:N (불특정 다수), Unicast : 1:1, Multicast : 1:N (특정 다수)
  • 네트워크 설정 파일(CentOS 6.9 기준)
    • /etc/sysconfig/network-script/ifcfg-[네트워크 인터페이스 명]
      • 네트워크 NIC 카드의 설정 정보를 수정 또는 확인
        • ONBOOT : OS 구동 시 해당 ethernet을 깨울꺼냐
        • BOOTPROTO : dhcp 쓸꺼냐 static 쓸꺼냐
DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.0.171
NETMASK=255.255.255.0
GATEWAY=192.168.0.2
NETWORK=192.168.0.0
DNS1=168.126.63.1
DNS2=8.8.8.8
  • /etc/resolv.conf
    • 네트워크의 도메인 서버 설정 정보를 수정 또는 확인
    • DNS nameserver
    • 설정 변경 이후 서비스 재시작 필요
  • /etc/sysconfig/network
    • 네트워크의 전체 기본 게이트웨이 주소를 설정, 호스트 네임, 네트워크 연결 허용 여부 설정 및 확인
  • /etc/udev/rules.d/70-persistent-net.rules
    • 실제 장비가 변경되었을 때 네트워크 기본 설정을 제어하는 파일
  • 네트워크 구성
    • 설정 파일 변환을 통한 네트워크 세팅
      • DNS 서버 설정
vi /etc/resolv.conf
  • DNS 설정을 아래와 같이 수정
search localdomain
nameserver 168.126.63.1
nameserver 168.126.63.2
  • 설정에 따라 /etc/ifcfg-eth0에 설정에서 아래와 같이 수정 네트워크 서비스 재시작
sudo /etc/init.d/network restart
  • 명령어를 이용한 네트워크 세팅
    • IP, Gateway 설정
단말 IP 주소 설정
-------------------------------------------------------------------------
ifconfig [디바이스명] [IP] netmask [SUBNETMASK] broadcast [BROADCAST_ADDR]

네트워크 대역 설정
-------------------------------------------------------------------------
route add -net [NETWORK_ADDR] netmask [SUBNETMASK] [DEVICE_NAME]

게이트웨이 주소 설정
-------------------------------------------------------------------------
route add default gw [IP] dev [DEVICE_NAME]
  • IP, 물리적 주소, 브로드캐스트, 서브넷 마스크 등 네트워크 카드 정보 확인
    • ifconfig
  • 글로벌 주소 또는 게이트웨이 주소 확인
    • route -n
  • DNS 설정 값 확인
    • nslookup
    •  > server

리눅스 파일시스템 구조의 이해

  • 파일시스템
    • 개요
      • 파일시스템(File System) : 컴퓨팅에서 데이터 저장 및 검색 방법을 제어하는 체계
      • 리눅스에서 보통 파일시스템 생성이라 표현하며 윈도우에서 주로 사용하는 포맷과 동일하게 표현
    • 파티션과 볼륨
      • 파티션
        • 하나의 디스크를 여러 개의 파일 시스템으로 구성
        • 여러 개의 디스크를 하나의 파티션으로도 통합 가능
        • 운영체제의 경우 각 파티션을 별도의 디스크처럼 취급
      • 볼륨
        • 디스크 상의 논리적인 분할 단위
        • 섹터 또는 클러스터들이 모여 이루어진 큰 덩어리
  • 모든 것은 파일 : 디렉터리, 일반 파일, 특수 파일
    • 유닉스 프로그램의 모토로, 이전까지는 마우스, 키보드, 프린터 마다 각각 다르게 처리
    • 유닉스는 각각의 장치를 파일로 처리, I/O Redirection을 이용하여 디렉터리 어디서든 장치들과 입출력이 가능
    • 리눅스에서도 모든 것이 파일로 액세스됨
      • 일반 파일
      • 디렉터리 파일
      • 특수 파일
        • 블록 장치 파일
        • 캐릭터 장치 파일
        • 심볼릭 링크 파일 등
  • 파일과 디렉터리 이해
    • 트리 구조
      • 리눅스 파일 시스템은 파일과 디렉터리의 계층적 구조를 가지고 있으며, 보통은 서로 연관된 파일들을 하나의 그룹으로 모으고 각 그룹을 고유의 디렉터리에 보관
      • 이 계층 구조의 기초에는 루트 디렉토리가 있고, 슬래시(/)로 나타냄
      • 모든 파일과 디렉터리는 루트 디렉터리의 자식 혹은 먼 후손

  • ls -l 명령어를 수행했을 때 출력되는 파일 구조 (파일크기 단위 : 바이트)

  • 일반 파일
    • 마이너스(-) 기호로 시작
      • 실행 파일, 스크립트, 이미지 파일, 텍스트 파일, 설정 파일, 압축 파일 등
    • 디렉터리
      • 문자 ‘d’로 시작
        • 최상위 디렉터리에서 ls -l 명령어를 입력하면 쉽게 확인 가능
    • 링크 파일
      • 하나의 파일과 연결된 다른 이름의 파일
        • 하드 링크 : 같은 inode 번호를 가짐
        • 심볼릭 링크 : 문자 ‘l’로 시작
    • 디바이스
      • 블록 디바이스와 문자 디바이스
        • 블록 디바이스 (Block Device)
          • 문자 ‘b’로 시작
          • 하드디스크나 플로피디스크 디바이스 등
        • 문자 디바이스 (Character device)
          • 문자 ‘c’로 시작
          • 터미널 디바이스, 사운드 카드, 마우스, 프린터 등
  • Inode
    • 리눅스의 파일에 대한 모든 정보를 추적하는 데이터 구조
    • 파일의 이름은 사람에게 도움이 되지만 파일 시스템에게는 이름이 아니라 숫자로 파일을 인식
      • 사용자는 정보를 파일에 저장 → 운영체제는 파일에 대한 정보를 Inode에 저장
        • Inode는 다른 방식으로 ‘메타 데이터’라고 부를 수 있다.
          • 메타 데이터 : 데이터에 대한 데이터
      • ‘이름’을 사용해 특정 파일에 접근하기 위해서는 Inode table의 고유한 번호(Inode number)가 필요
    • 리눅스 파일 시스템 구조에서 Inode Block

  • Inode를 통한 파일 접근
    • File 1.txt의 데이터에 접근하는 경우 (디렉터리 접근도 동일)

  • Symbolic link
    • Hard link
      • 하나의 inode를 공유하는 다른 파일을 생성
      • a 파일을 수정하면 b에서도 수정 사항 반영
      • 원본 파일이 삭제되어도 액세스 가능
    • Sym link
      • 파일을 가리키는 하나의 파일을 생성 (바로가기)
      • 원본파일이 이동하거나 삭제되는 경우 액세스 불가능(링크 깨짐)
반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!