해당 포스팅은 2022학년도 동계 겨울방학 중 수강했던 "Linux 운영체제의 이해와 활용" 특강을 듣고 정리한 내용입니다.
1. 리눅스 파이프 명령(Pipe instruction), 리다이렉션(Redirection)
1-1. 리눅스 파이프 명령(Pipe instruction)
- 보통 리눅스 커맨드에서 사용되는 명령어들은 명령어를 조합하여 많이 사용하게 되는데 이때 조합 문자를 "|"(Vertical bar)를 이용합니다. 두 명령어를 "|"으로 연결해 주면 어떤 명령의 출력이 그 다음 명령의 입력값이 되는데 이것을 파이프 명령(Pipe instruction)이라고 합니다.
1-2. 파이프 명령의 예시 : ps, grep 명령어 활용
(1) ps
- 현재 리눅스에서 실행되는 프로세스를 확인할 수 있는 명령어
(2) grep
- grep 명령어는 각 파일이나 텍스트에서 일정한 패턴(Pattern)을 검색할 때 사용하며 문자열, 정규 표현식 등의 패턴을 찾고자 할 때 리눅스에서 자주 쓰이는 커맨드입니다.
- 커맨드 라인에서 ps -ef를 입력하면 현재 실행되고 있는 모든 프로세스에 세부 정보가 표시됩니다.
- 커맨드를 실행하면 아래와 같이 모든 프로세스의 세부 정보가 출력되나, 전체 커맨드창을 모두 채울만큼 많은 프로세스가 실행되고 있는 상태에서 원하는 키워드만 뽑아낸 프로세스들만 확인하고 싶다면, 이때 파이프 명령어를 활용할 수 있습니다.
- 파이프 명령어를 활용해 보겠습니다. 아래와 같이 입력합니다.
- ps -ef | grep httpd2
- "|" 기호를 통해 이전 명령어의 출력값이 다음 grep 명령의 입력으로 전달되어 아래와 같이 httpd 키워드가 포함된 프로세스들의 세부 목록만 출력되고 있음을 확인할 수 있습니다.
1-2. 리눅스 리다이렉션(Redirection)
- 기초적인 용어부터 확인해 보겠습니다.
- 표준 입력(Standard Input, Stdin) : 쉘에서 키보드로 명령을 입력받는 것
- 표준 출력(Standard Output, Stdout) : 키보드로 입력받은 명령의 실행결과를 출력하는 것
- 쉘에서 명령의 결과를 바로 확인하지 않고 파일에 저장할 수 있으며 이때 리다이렉션(Redirection)을 사용하게 됩니다. 리다이렉션을 이용하여 출력과 입력의 방향을 지정해줄 수 있습니다.
리다이렉션 기호 | 방향 | 해당 의미 |
> | 표준 출력 | 명령어 > 파일 - 명령의 결과를 파일에 저장합니다. |
>> | 표준 출력(추가) | 명령어 >> 파일 - 명령의 결과를 기존 파일 데이터에 추가합니다. |
< | 표준 입력 | 명령어 < 파일 - 파일의 데이터를 명령에 입력합니다. |
- 커맨드창에 ls -al > output1.txt 해당 커맨드를 줍니다.
- output1.txt 파일이 정상적으로 생성된 것을 확인할 수 있습니다.
- 이제 cat 명령어로 텍스트 파일에 출력 내용이 저장되었는지 볼 수 있습니다.
- 이를 통해 리다이렉션(Redirection)을 이용하면, ls -al 커맨드의 표준 출력들이 output1.txt 파일에 저장된 것을 확인했습니다.
2. 리눅스 디렉토리 구조(Directory structure)
2-1. 디렉토리 구조 개요
- 리눅스는 유닉스와 마찬가지로 모든 대상들을 파일로 관리합니다.
- 위와 같은 디렉토리 파일들을 관리하기 위해 계층적으로 구성하며 이를 트리 구조라고 합니다.
- 모든 디렉토리의 최상위 디렉토리를 루트 디렉토리(/)라고 합니다.
- 아래에서 주요 디렉토리의 기능들을 알아보겠습니다.
2-2. 주요 디렉토리의 기능
디렉토리 위치 | 디렉토리명 | 기능 |
/ | / | - 모든 디렉토리의 최상위 디렉토리 |
/bin | bin | - 기본적인 명령어가 저장된 디렉토리 - 자주 사용되는 명령어들이 해당 디렉토리에 저장 |
/boot | boot | - 리눅스의 부팅에 필요한 정보를 가진 파일들이 저장된 디렉토리 |
/dev | dev | - 시스템 장치 파일을 저장하고 있는 디렉토리 - 물리적 장치들이 파일 형식으로 저장되어 있음 |
/etc | etc | - 리눅스의 설정 파일이 저장된 디렉토리 |
/home | home | - 사용자의 홈 디렉토리가 존재하는 곳 - 사용자를 추가할 때마다 사용자 ID명과 동일한 디렉토리가 생성됨 |
/lib | lib | - 커널이 필요로 하는 라이브러리, 커널 모듈 파일이 존재하는 디렉토리 |
/media | media | - 외부 기억장치들의 마운트 연결 시 사용되는 디렉토리 |
/mnt | mnt | - 사용자가 직접 외부 장치들을 마운트할 때 사용되는 디렉토리 |
/opt | opt | - 추가 응용 프로그램 패키지가 설치되는 디렉토리 |
/proc | proc | - 현재 메모리에 적재되어 실행 중인 프로세스가 파일 형태로 존재하는 디렉토리 - 프로세스 정보, 커널 정보와 같은 내용이 저장되어 있음 |
/root | root | - 최상위 루트 디렉토리가 전혀 다른 디렉토리 - 관리자 계정 root의 홈 디렉토리 |
/sbin | sbin | - 시스템 바이너리 파일, ifconfig, ethtool와 같은 시스템 명령어들을 저장하고 있는 디렉토리 |
/usr | usr | - 일반 사용자들이 사용하는 디렉토리 |
/var | var | - 기타 용도로 사용될 수 있는 디렉토리 - 로그 파일 수집, 데이터베이스 캐싱 파일, 웹 서버 이미지 등 다양한 파일이 존재하는 디렉토리 |
/sys | sys | - 디바이스를 관리하기 위한 가상 파일 시스템 디렉토리 |
/run | run | - 실행 환경 변수(Run-time variable)를 관리하는 디렉토리 - 부팅한 후의 시스템 정보를 관리하는 디렉토리 |
/tmp | tmp | - 임시 파일을 저장하기 위한 디렉토리 |
/lost + found | lost + found | - 휴지통과 같은 개념으로, 삭제된 파일이 저장된 디렉토리 |
3. TCP / IP 프로토콜
3-1 . TCP(Transmission Control Protocol) - 전송 제어 프로토콜
(1) 정의
- 근거리 통신망 또는 인터넷으로 연결된 프로세스 간에 데이터를 교환할 수 있는 프로토콜로써 IP와 함께 사용되며 일반적으로 TCP/IP 프로토콜로 많이 알려져 있습니다.
(2) 주요 특징
- Connection Oriented(CO) 방식의 전송 기능을 담당하는 프로토콜입니다.
- 이를 통해 신뢰성 있는 데이터 전송 기능을 보장합니다.
- Sequence Number를 부여함으로써 데이터를 전송할 때 데이터마다 넘버링을 진행합니다.
- 속도는 다소 떨어지지만 안정적이고 신뢰성이 보장되는 데이터 전송 기능을 수행할 수 있으며 해당 특성상, 누락된 데이터나 잘못된 데이터가 있는지 검사하고 만약 존재한다면 해당 데이터를 다시 보내도록 요청할 수 있습니다
- IP(Internet Protocol)의 문제점을 해결하고자 고안된 프로토콜이기도 합니다.
- 확실한 데이터 송신을 보장하기 위해 3-Way handshaking이라는 동작을 진행합니다.
( 연결 해제 과정 : 4-Way handshaking)
(3) TCP 3-Way handshaking
- TCP 3-Way Handshaking이란, TCP/IP 프로토콜을 사용해서 데이터를 전송하기 전에, 상대 클라이언트와의 성공적인 접속 여부를 보장하기 위해 미리 세션을 수립하는 과정을 의미합니다.
- SYN (Synchronization)
초기 연결 요청으로 세션을 설정하는데 사용되며, 초기 시퀀스 번호를 서버 측으로 보냅니다.
- ACK (Acknowledgement)
보낸 시퀀스 번호에 대해 응답 코드로 seq + 1 값을 보냅니다.
(1) 클라이언트는 서버와 연결(Connection)을 위해 SYN(seq = x)을 보냅니다.
(2) 서버가 SYN을 받고 클라이언트 측으로 연결 요청을 받았다는 ACK와 SYN 패킷을 보냅니다.
(seq = y, ACK = x + 1)
(3) 클라이언트는 서버의 응답을 받고 확인했다는 내용으로 ACK(y + 1)을 서버로 보냅니다.
3-2. UDP(User Datagram Protocol) - 사용자 데이터 프로토콜
- TCP와 마찬가지로 인터넷에 연결된 프로세스 간 데이터 교환을 위한 프로토콜이나 TCP와는 다른 특징을 보유하고 있습니다.
- Connectionless(CL) 방식으로 데이터를 교환합니다.
- TCP와 달리 별도 연결 과정없이 데이터를 송신합니다.
- 데이터를 전송할 때 별도의 순서를 부여하지 않습니다.
- 이러한 특징으로 속도는 TCP보다 빠르지만 신뢰성 있는 전송 기능을 보장할 수 없게 됩니다.
3-3. IP(Internet Protocol) - 인터넷 프로토콜
- 인터넷 프로토콜은, 통신에 있어 가장 기본이 되는 프로토콜로써 각 컴퓨터마다 IP 주소를 부여하여 해당 IP 주소에 패킷이라는 데이터 형식을 사용하여 데이터를 전송할 수 있는 프로토콜을 의미합니다.
- IP 프로토콜의 핵심은 이러한 데이터 패킷을 지정된 목적지까지 가장 효율적인 방법(라우팅)을 통해 최종 목적지로 데이터를 전송하는데 있습니다.
- TCP/IP 프로토콜은 TCP, IP 프로토콜을 하나로 합쳐서 부르는 말이며 IP 주소 체계를 이용, TCP 프로토콜 특성을 통해 송신자 - 수신자 간의 논리적 연결을 생성하고, 이를 통해 신뢰성 있는 데이터를 전송하겠다는 부분에 의미가 있습니다.
4. 정보 보안(Information security)
4-1. 정보 보안의 개요
- 우리는 현재 고도화된 4차 산업 혁명 속에서 수많은 데이터와 함께 살아가고 있습니다. 카카오톡 메신저를 통해 누군가에게 메시지를 보내고 업무 일정을 공유하기도 하며, 쇼핑몰 애플리케이션을 통해 자신의 카드, 신용 정보가 담긴 결제 정보로 특정 상품을 구매하는 등 수많은 데이터를 기반으로 한 IT 서비스들이 우리 삶에 스며들어 있고 이들을 항상 사용하고 있습니다.
- 위에서 언급한 카드사에 대한 본인의 결제 정보, 아는 지인에게 보낸 메시지의 내용 등 대부분 외부로 노출되어서는 안 되는 민감한 정보들이 주변에 항상 존재하며 만약 이윤을 추구하는 기업의 입장에서 바라본다면, 해당 기업의 서비스를 이용하는 고객들의 신원 정보, 결제 정보 등 외부로는 절대 유출되어서는 안 되는 주요 정보이고 이를 처리하고 관리하며 기업들은 각 클라이언트들의 정보를 안전하게 유지하고 이를 보호하기 위한 기술적 요소, 법률적인 요소들을 계획하고 수립합니다.
- 기업 입장에서 이러한 고객들의 주요 정보가 외부 크래커에 의해 유출되거나 조회된다면 이는 회사의 막대한 수익 손해와 직결되는 문제이며 서비스를 이용하는 고객들의 신뢰는 잃어버릴 수 있는 중요한 문제이기에 많은 기업들이 이러한 정보보호(Information security)에 많은 관심을 가지고 있습니다.
4-2. 정보 보안(Information security)이란?
- 정보 보안은 말 그대로 이러한 정보를 보호하고 안전하게 유지할 수 있는 것을 의미하며 정보의 흐름, 생태계에 대한 전체의 보호를 의미하기도 합니다.
4-3. 정보보안의 핵심 원칙 : 기밀성, 무결성, 가용성
(1) 기밀성(Confidentiality)
- 오직 인가된 사람, 프로세스, 시스템에게만 정보를 공개하는 것을 의미합니다.
(2) 무결성(Integrity)
- 인가되지 않은 사용자 외에 다른 사용자는 정보를 수정하거나 위/변조할 수 없는 것을 의미합니다.
(3) 가용성(Availability)
- 접근 권한이 존재하는 인가된 사용자는 본인이 필요할 때 원하는 정보에 항상 접근할 수 있도록 하는 것을 의미합니다.
======================================================================
해당 포스팅에 대해 내용 추가가 필요하다고 생각되면 기존 포스팅 내용에 다른 내용이 추가될 수 있습니다.
개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있습니다.
이에 대해 지적해 주시면 감사하겠습니다.
'컴퓨터 과학(Computer Science) > Linux' 카테고리의 다른 글
[Linux] - 웹 서버와 WAS, HTTP 통신(Cookie, Session, JWT, 요청과 응답) (0) | 2023.01.06 |
---|---|
[Linux] - 암호화 개념과 해시 함수(Hash function), 대칭키 암호화, 공개키 암호화 방식, SSL (0) | 2023.01.05 |
[Linux] - 리눅스 개요, Virtual Box 환경 구성, SSH로 Linux에 접속하기 (0) | 2022.12.29 |
댓글