※ 2020년 10월, 6월 / 2019년 9월, 3월 기출 문제를 참고해 작성했습니다.
※ 잘 나오는 개념만 정리
1과목 : 리눅스 실무의 이해
1. 리눅스 운영체제
- 리눅스 기반 운영체제 : Tizen , webOS, GENIVI ( * 리눅스 기반 아닌것 : QNX )
* Tizen : 인텔과 삼성 주축으로 만든 리눅스 기반의 무료 공개형 모바일 운영체제
* webOS : 인터넷 기반 OS, 리눅스 커널에서 구동되는 OS
* GENIVI : 리눅스 기반 자동차 IVI 플랫폼
* GNX : 유닉스 형태의 RTOS으로 임베디드에 내장되는 운영체제
- 리눅스 운영체제 특징
: 약간의 어셈블리와 대부분의 C언어로 작성됨
: 하나의 시스템에 다중 사용자 접속, 다중 처리 시스템 지원
: 고유 파일 시스템 외 DOS, Windows, 사용 유닉스 등의 다양한 파일 시스템 지원
(* 운영체제의 핵심인 커널을 제외한 포함한 나머지 프로그램 소스 공개됨)
- GPL 버전 별 주요 특징 중 2차적 저작물 소스 공개 여부
: 공개 - GPL, LGPL, MPL
: 비공개 - BSD, Apache, MIT
- LGPL이 적용된 라이브러리는 독점소프트웨어 에서도 사용이 가능하고, LGPL을 사용해서 개발 한 뒤 GPL로 변경 가능(* GPL에서 LGPL로 변경 X!!)
* Apache : 해당 라이선스가 적용된 소프트웨어를 다운로드 하여 부분 혹은 전체를 개인적 또는 상업적 목적으로 이용 할 수 있다. 재배포 시에도 소스코드 또는 수정한 소스코드를 포함하여 반드시 공개하도록 요구하지 않는다. 다만 재배포 할 경우 해당 라이센스를 포함시키고 관련 소프트웨어임을 명확히 밝혀야 한다.
- 리눅스 배포판 다른 종류
: 데비안 계열 - Ubuntu, Kail Linux
: 우분투 계열 - Linux Mint, Elementary OS
: 슬랙웨어 계열 - Vector Linux
: 레드햇 계열 - CentOS, Scientific Linux, Oracle Linux
* Kail Linux : Offensive Security에 만든 데비안 기반의 리눅스로 정보 보안을 테스트하기 위해 해킹과 관련된 도구와 설명서 등을 내장하고 있다
* 배포된 리눅스의 순서 가 초기 부터 최근 순 : SLS -> Slackware -> SUSE
- 데비안 : 이안 머독이 설립하고 개인들에 의해 패키지화 되어 dpkg라는 패키지 도구 사용
- 레드헷: 레드햇 리눅스의 약자는 RHEL 로 현재까지 유료로 배포, RPM 패키지로 배포
- 유닉스를 개발한 인물 : 켄 톰슨
* 리누스 토발즈 : 리눅스 개발
* 빌 조이 : vi 편집기 개발, C 셸 개발
* 리처드 스톨먼 : GNU프로젝트와 자유 소프트웨어 재단 설립자
- 가상콘솔 (Virtual Console)
: 현재 로컬 시스템 상에서 특정 사용자로 로그인 중이나 다른 계정에게 메시지를 보내는 실습 진행위해 추가로 로그인하려고 함
(* 파이프 X)
- 파이프(Pipe)
: 프로세스 통신을 위해 도입된 것으로 여러 명령을 조합할때 사용
- 스와핑(Swapping)
: 메모리의 공간 부족시 가상 메모리 설정하여 메모리와 하드디스크 사이의 데이터 교환을 통해 새로운 프로그램 실행
: 물리적인 메모리의 부족 현상을 해결하기 위한 방법으로 디스크의 일부를 사용함
- 라이브러리
: 하드디스크 공간의 효율성을 높여준 기술
*스와핑과 라이브러리 비교!!!
- 리눅스 클러스터링(Clustering)
* 고계산용 클러스터 (HPC) : 고성능 계산을 위해 제작, 주로 과학 계산용, 베이울프로 개발 시작
* 부하분산 클러스터 (LVS ) : 다수의 웹 서버 운영시 유용 , 로드 밸런서를 두고 운영
* 고가용성 클러스터 (HA) : 지속적인 서비스 제공, Backup node가 primary node 이상 발생시 서비스 이어 받음
- 클라우드 컴퓨팅
* IaaS : IT하드웨어 자원을 클라우드 서비스로 일정 기간 동안 빌려쓰는 형태 ex) 아마존 aws
* PaaS : 개발할 수 있는 환경 (플랫폼) 제공
* SaaS : 소프트웨어를 통째로 클라우드 서비스 사업자에게 빌려씀 ex) 구글 Drive
* FaaS : 서버리스 컴퓨팅도 클라우드 컴퓨팅 일종 (세분화된 개념)
2. 리눅스 시스템
- 하드 디스크 드라이브
* IDE 디스크 : /dev/hda, /dev/hdb 등
* SCSI, S-ATA, USB 메모리, SSD : /dev/sda, /dev/sdb 등
- RAID
: 여러 개의 하드 디스크 에 동일한 데이터를 다른 위치에 중복 저장하는 방법
* RAID 0+1 : RAID-0의 스트라이핑 기술로 구성하고, RAID-1의 미러링 구성하는 방식, 최소 4개 디스크 필요
* RAID-10 : RAID 0+1의 반대 개념, 디스크 2개를 먼저 미러링 구성하고 스트라이핑하는 방식, 디스크 4개 필요
- LVM (Logical Volume Manager)
: 여러개의 하드 디스크를 뭉쳐서 하나의 디스크인 것 처럼 만들거나 사용 중인 파티션의 크기를 줄이거나 늘릴 수 있음
1) 물리적 볼륨(PV; Physical Volume)
: 실제 디스크에 물리적으로 분할한 파티션 , /dev/sdb1, /dev/sdc1 등
2) 볼륨 그룹(VG ; Volume Group)
: 물리적 볼륨이 모여서 생성하는 덩어리
3) 논리적 볼륨(LV; Logical Volume)
: VG에서 사용자가 필요한 만큼 할당하여 만들어지는 공간, 파티션
*LVM 구성순서 : 물리적 볼륨 -> 볼륨 그룹 -> 논리적 볼륨
- GRUB 환경 설정 파일 grup.conf 파일에서 default=1,timeout=100 이란?
: 100초 동안 대기 한 후에 메뉴 선택이 없으면 두번째 항목의 운영체제로 부팅한다. (* 첫번째 아님!)
- GRUB 패스워드 설정하는 과정의 일부이다. ()는 password --md5
* single 모드 부팅을 제한하기 위해 grub 패스워드 설정하려고 한다. grub 패스워드 설정 시 암호화 알고리즘 ? MD5
(* SHA-1 , SHA-256, Blowfish 아님!!!)
* grub 쉘 에서 암호화된 패스워드 설정하는 명령? md5crypt
* /etc/inittab
: 리눅스 부팅시 어떠한 방법으로 부팅할것인지 설정할수있는 파일이다. 해당 파일을 init 프로세서가 돌면서 읽게되고 해당 설정에 따라 부팅을 하게된다
: run level을 재부팅 후에도 적용하기 위해 변경해야 할 파일
-로그인 메시지 관련 파일
/etc/issue : 'login:' 이라는 메시지를 보여주기전에 출력되는 내용을 적는 파일
/etc/issue.net : /etc/issue 파일과 역할은 같다
/etc/motd : 'Messge of The day' 의 약어로 성공적으로 로그인 될때 보여주는 메시지 기록 파일
(* /etc/inittab 아님!!)
- 시스템 종료
init 0 : 시스템 즉시 종료
init 6 : 시스템 즉시 재부팅
init 1 : 단일 사용자 모드로 전환
-저널링 파일 시스템
: 파일 시스템에 대한 변경사항을 반영하기전에 저널이라 부르는 로그에 변경사항 저장
: 문제가 발생된 경우 데이터 복구 확률 높여줌: 파일 시스템을 검사하는 명령인 fsck 에 걸리는 시간 단축하기 위해 로그에 데이터 남김
-아이노드(inode): 전통적인 유닉스 계열 파일 시스템에서 사용하는 일종의 자료 구조: 파일은 하나의 아이노드를 할당받아 관리됨
- X.org: 현재 리눅스를 비롯하여 유닉스의 대부분이 이 프로젝트의 X윈도 시스템 사용
[X윈도]
- X윈도 특징
: 네트워크 프로토콜에 기반한 그래픽 사용자 인터페이스 환경
: 디스플레이 장치에 의존적이지 않고, 서로 다른 기종이 함께 사용 가능
: 이식성이 뛰어남
: 원격지의 X클라이언트를 다른 시스템의 X서버에서 실행가능
- X윈도 구조
: 클라이언트/서버 구조
: 서로간 통신 위해 X protocol 사용함 (* xhost 아님!)
: X서버는 그래픽하게 보여주는 하나의 시스템이고
: X클라이언트는 X서버 위에 동작하는 일종의 응용 프로그램
- XCB (X protocol C-language Binding)
: X.org에서 Xlib대체하여 사용 (Xlib : X서버와 대화해주는 역할)
: 향상된 쓰레드 기능 지원
: 확장성 뛰어남
: 라이브러리의 크기가 작고 단순
: X 프로토콜에 접근 가능
- X윈도의 실행
1) 텍스트 모드 - systemctl set-default multi-user.target
2) X윈도 부팅 모드 - systemctl set-default graphical.target
- startx
: X윈도를 실행시키는 스크립트로 시스템 환경을 초기화 시키고, 시작하는데 필요한 여러 프로그램 호출
: 최종적으로 xinit을 호출하는 명령어
- X클라이언트 를 원격지로 전송하기 위해서는 환경변수 DISPLAY의 값을 원격지의 주소로 변경하면 된다.
- 원격지에서 X클라이언트를 이용하기 위한 설정을 사용자 기반의 키 인증을 진행할때 사용하는
명령어 : xauth (*xhost 아님!!) , 관련파일 : .Xauthority (* authorized_keys 아님!)
- 디스플레이 매니저(Display Manager)
: 런 레벨5로 부팅 할 경우 사용자 로그인 및 세션 관리, GNOME에서 사용하는 GDM, KDM
- 데스크톱 환경 (DE)
: 사용자에게 제공되는 인터페이스 스타일
: 파일 관리자, 아이콘, 창, 도구모음, 폴더, 배경화면, 위젯 등 제공
: Drag&Drop 과 프로세스 간의 통보와 같은 기능 지원
- 윈도 매니저
: X윈도 환경에서 윈도의 배치와 표현 담당
: 데스크톱 환경 구성에 도움: 창 열기 ,닫기, 최소화 및 최대화 등
-윈도 매니저의 종류
GNOME3 버전 - Mutter
GNOME2 버전 - Metacity
GNOME 초기버전 - nautilus
KDE2 버전 - KWin
KDE1 버전 - KWM
* X 관련 프로그램의 종류가 나머지 셋과 다른 것? Xfce , KWin, Metacity, Mutter
( xfce -유닉스 및 유닉스 계열(GNU/리눅스, 솔라리스, BSD 등) 플랫폼을 위한 자유 소프트웨어 데스크톱 환경이다. 시각적으로 미려하고 사용하기 쉬우면서 빠르고 가볍게 하는 것이 목표이다.)
*디스플레이 매니저, 데스크톱환경, 윈도 매니저 구분 문제 종종 출제!
* brw-rw---- 와 같은 허가권 갖는 파일 디렉토리 : /dev
* evince 프로그램이 지원하는 문서 포맷? PS, PDF, XPS (PSD아님)
[쉘(shell)]
- bash
: GNU프로젝트 위해 개발
: 현재 리눅스의 표준 쉘이다
: 명령 히스토리, 명령어 완성 기능 , 히스토리 치환, 명령행 편집 등 을 지원
: POSIX 와도 호환
- 사용자의 로그인 쉘 정보는 /etc/passwd 의 7번째 필드에 기록됨 ( * 5번째 아님!!)
- chsh (* shch 아님!! ) change shell 축약
: 사용자의 로그인을 변경하는 명령어
- history 명령어
!! : 마지막에 사용한 명령 실행, 바로 직전에 수행한 명령어 재실행
!n : n번째 사용한 명령 실행
!-n : 사용한 명령 역으로 n번째 명령 실행
!문자열 : 가장 최근에 사용한 명령 중 '문자열' 로 시작하는 명령
!?문자열? : 가장 최근에 사용한 명령 중 '문자열'을 포함하는 명령
^문자열1^문자열2 : 마지막 사용한 명령문 중 '문자열1' '문자열2' 로 대체
*최근 입력한 명령어 5개 출력? history 5 (* !5 아님)
-표준 입출력 종류
표준 입력 : 입력 ,stdin , 숫자값 0
표준 출력 : 결과값, stdout, 숫자값 1(생략가능)
표준 에러 : 에러값, stderr, 숫자값 2
- 아규먼트 변수
$0 : 실행된 쉘 스크립트 명
$1 : 스크립트로 넘겨진 첫번째 아큐먼트
$2 : 스크립트로 넘겨진 두번째 아큐먼트
$# : 스크립트로 넘겨진 아규먼트의 개수
$? : 뒤의 반환값, 즉 참이면 0, 거짓이면 1이 반환됨
- set : 셀 변수 출력
- env : 환경변수
- export : 전역변수 선언
- unset : 선언된 변수 제거
[프로세스]
- 프로세스의 정의
: 실행중인 프로그램
: PCB를 지닌 프로그램
: 프로그램 카운트를 지닌 프로그램
: 능동적 개체로 순차적으로 수행하는 프로그램 (* 수동적 아님!!)
-프로세스의 생성
fork : 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스 실행, 기존의 프로세스는 그대로 실행
exec : 원래의 프로세스를 새로운 프로세스로 대체하는 형태, 덮어씌어 버린다
-멀티태스킹과 작업 전환
: 포어그라운드 프로세스를 백그라운드 프로세스로 전환하기 위해서 [CTRL] + [z] 누르면 된다 ( * d아님! x아님!)
: 작업의 상태는 'jobs' 라는 명령어로 확인
: bg 명령어 입력하면 백그라운드 프로세스로 전환
: 백그라운드를 포어그라운드로 전환시 'fg %작업번호 ', 'fg 작업번호' 로 전환가능
-시그널
: 프로세스 끼리 서로 통신 할때 사용
: 시그널의 목록은 kill -l 로 확인
SIGHUP | kill -1 | 접속끊겼을 때, 재시작(로그아웃과 같이 터미널 접속이 끊겼을때 재시작) |
SIGINT | kill -2 | 인터럽트 시그널 실행 중지, ctrl + c |
SIGQUIT | kill -3 | 실행중지, ctrl + \ |
SIGKILL | kill -9 | 강제종료 |
SIGTERM | kill -15 | 정상종료 |
SIGCONT | kill -18 | 정지된 프로세스 다시 실행 |
SIGSTOP | kill -19 | 터미널에 입력된 정지 시그널 |
SIGTSTP | kill -20 | 실행정지 후 다시 실행위해 대기 , ctrl + z |
* 가장 큰 시그널 번호값? SIGTERM(15), SIGKILL(9), SIGSTOP(19), SIGQUIT(3)
- 데몬
: 계속 실행되는 프로세스, 백그라운드로 실행됨
standalone 방식 : 보통 부팅시 실행, 빈번한 요청 들어오는 서비스 처리, 항상 동작중
inetd
: 데몬만 메모리에 상주하면서 관련 프로세스를 실행하며 메모리에 상주시키고, 관련작업 종료되면 프로세스 종료시킴
: telnet, rlogin 등과 같은 서비스를 이용하는 사용자는 적지만 반드시 서비스를 해야 하는 경우에 효율적인 메모리 관리가 필요할때 사용 (* exec 아님)
-데몬 관련 유틸리티
ntsysv : 텍스트 환경에서 커서를 이용하여, 부팅 중 자동으로 실행되는 서비스
chkconfig : System V 기반의 init 스크립트 시절에 사용하던 텍스트기반의 명령형 프로그램, 서비스의 on/off 설정 리스트 출력하거나 설정함
3. 네트워크
[프로토콜]
- 프로토콜 : 컴퓨터 상호간에 통신을 위해 미리 정해놓은 특별한 통신 규칙: 대표적인 프로토콜 - TCP/IP
- 프로토콜의 기본 구성요소 3가지
구문(Syntax), 의미(Semantics), 순서(Timing)
-프로토콜의 기능
: 단편화와 재조합: 흐름제어: 동기화: 멀티 플렉싱: 캡슐화
- 프로토콜 제정 기관ISO - OSI 참고모델 관련 프로토콜 제정
IEEE - 전기 및 전자공학 구성
ANSI - ASCII 코드
EIA - 미국 전자 산업 협회
ITU-T - 전기 통신 업무 능률 향상 정부간 국제기구
[TCP/IP]
-TCP/IP
: 컴퓨터 기종에 관계없이 정보교환 가능 프로토콜
: 인터넷 프로토콜 중 가장 중요한 역할
-TCP/IP 구조응용계층 - HTTP, SMTP, POP3, IMAP, DNS 등
전송계층 - TCP, UDP 등
인터넷 계층 - IP(V4,V6), ICMP, ARP
* 물리계층은 상위 계층에서 전송된 데이터를 물리적인 전송 매체를 통해 비트(bit)형태로 전송 (* 바이트 아님!)
*인터넷 계층은 전송계층에서 받은 패킷을 목적지 까지 효율적으로 전달하는 역할
ICMP - 메시지에 대한 오류보고, 피드백
ARP - 목적지 호스트의 하드웨어 주소 찾는 역할(* IMAP 아님!! -> 응용계층)
라우터 역할
* 전송계층은 응용계층으로 부터 받은 데이터를 세그먼트형태로 만들어 네트워크를 통해 수신자에게 전달, 연결기능
TCP - 연결 지향 전송 프로토콜, 3-way handshaking , 상대적으로 많은 전송 시간 필요, 안정성과 신뢰성 뛰어남, 대용량 전송, IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구
UDP - 비연결 전송 프로토콜 , TCP에 비해 속도가 빠름 ,네트워크 부하 줄임, 시스템 내부 메시지 및 소규모 데이터 전송, DNS 에서 많이 사용
* 응용계층은 네트워크로 연결된 프로세스 간의 통신 접속을 위해 설계된 통신 프로토콜
HTTP, FTP,TFTP,SMTP,IMAP,POP3,TELNET,DNS,NFS,NIS 등
* 네트워크 계층은 데이터를 패킷 단위로 분할 하여 전송
* 데이터링크 계층은 상위계층인 네트워크 계층에서 받은 데이터를 프레임(frame) 단위로 구성하고 물리계층에 전달
- 물리계층(bit) -> 데이터계층(frame) -> 네트워크계층(packet) -> 전송계층 (segment) -> 세션계층(data)
- Router
: OSI 모델의 물리계층, 데이터 링크 계층, 네트워크 계층의 기능 지원 장치
: 자신과 연결된 네트워크 및 호스트 정보를 유지라고 관리하며 어떤 경로로 이용해야 빠르게 전송 할 수 있는지 판단하는 장치
[IP주소]
: 인터넷에서 다른 컴퓨터와 서로 인식하고 통신하기 위해 사용되는 특수한 번호
-루프백 IP주소
: 자기 자신을 가리키는 주소
: IP 대역 127.0.0.0 ~127.255.255.255 사용
- 사용가능 호스트 수가 126개인 서브 네트워크 구성시 네트워크 접두어 길이 표현 방법? /25
- C클래스에 속하는 하나의 네트워크 주소 대역을 할당 받고, 이 주소 대역을 2개의 네트워크로 나누면 총 사용가능한 전체 호스트 개수는 252개가 된다.
서브넷 마스크값의 네트워크 접두어는 ? /25
-IPv6
: IPv4의 주소 고갈 문제 해결, 콜론(:) 으로 구분 ( * 세미콜론 ; 아님!)
: 자동적으로 네트워크 주소할당 받음
: IPv4와 비교하여 구조가 단순화하여 전송 효율을 높일 수 있음
: 흐름 제어 기능을 지원하는 필드인 플로 레이블을 도입해서 고품질 서비스
- 도메인
: 도메인은 역트리 형태의 계층적 구조로 되어있음
: 최상위 도메인은 일반 최상위 도메인과 국가코드 최상의 도메인으로 구분
: 도메인 네임 시스템이 등장하기 이전에는 /etc/hosts 파일을 사용하여 IP주소 매핑
: 국제 인터넷 주소 관리 ICANN 에서 관리
[네트워크 관련 명령어]
- ifconfig (interface config): 네트워크 인터페이스를 설정하거나 확인하는 명령: IP주소, 넷마스크 주소, MAC 주소 등
- 점보프레임 (Jumbo Frame)
: 1500바이트 이상 최솟값 ( * 1300바이트 아님!!!)
: ifconfig 명령으로 점보프레임 설정 값 변경 및 확인
: 스위치와 네트워크 인터페이스 둘 다 지원 후 사용
-ping
: 인터넷 제어 메시지 프로토콜인 ICMP 을 이용하여 네트워크 연결 확인
: 최근엔 ICMP 프로토콜을 차단하여 ping 이나 traceroute 같은 명령 제한 , ping of Death 공격 대응
- traceroute
: 네트워크 장애 발생응로 통신 여부 확인하기 위해 특정 호스트까지 라우팅되는 과정 출력
- FTP 서비스에서 사용하는 명령어
mget : 원격지 파일 가져오기
mput : 업로드
mdelete : 멀티 딜리트로 여러개 파일 동시 삭제(* mcd 아님!!! -> ms-dos 디렉토리 변경 명령어)
- 포트는 번호로 관리되고 0번부터 1023번까지 잘 알려진 포트하여 주로 시스템에서 사용, /etc/services 파일에서 주요파일 확인
'서버 운영 > Linux' 카테고리의 다른 글
리눅스 마스터 1급 2차 기출 정리 - 파일 시스템 관리 (0) | 2021.10.10 |
---|---|
리눅스마스터1급 2차 실기 기출 및 예상문제 풀이 - 사용자 관리 (0) | 2021.10.07 |
[리눅스 마스터 1급] 1차 필기 기출 내용 정리(3) - 3과목 (0) | 2021.09.07 |
[리눅스 마스터 1급] 1차 필기 기출 내용 정리(2) - 2과목 (0) | 2021.09.05 |
리눅스(Linux) 란? (0) | 2021.08.26 |