IT보안 학습

리눅스 총정리

김구티2 2023. 12. 28. 13:03

1. 리눅스(Linux)의 개념

리눅스는 윈도우, 유닉스와 같은 운영체제의 한 종류로 컴퓨터 시스템의 하드웨어를 효율적으로 관리하기 위한 시스템 소프트웨어이다. 리눅스는 유닉스와도 유사한 운영체제 유형인데, 리눅스 커널을 기반으로 구축된 것이다. 여기서 리눅스 커널이란 컴퓨터가 하드웨어 및 리소스와 상호 작용하는 방식을 관리하므로 운영체제의 두뇌와도 같다고 말할 수 있다. 이 커널은 모든 것이 원활하고 효율적으로 작동하는지 확인한다. 그러나 두뇌만으로는 인체를 구성할 수 없듯, 리눅스 커널만으로는 완전한 운영체제를 만들기에 충분하지 않다. 완전하고 기능적인 시스템을 만들기 위해 리눅스 커널은 리눅스 배포판이라고도 불리는 소프트웨어 패키지 및 유틸리티 모음과 결합된다. 이것을 통해 리눅스 운영체제는 응용 프로그램을 실행하고, 컴퓨터에서 안전하고 효과적으로 작업을 수행할 준비를 마치게 된다. 이때의 리눅스 배포판은 600개가 넘을 정도로 다양한데, 이는 검색을 통해 각자에게 적합한 것을 알아보고 설치하는 게 좋을 것이다.

 

리눅스의 가장 큰 특징 중 하나는 무료로 사용하고 공유할 수 있다는 점이다. 누구나 소스 코드를 탐색하고 수정할 수 있도록 공개되어 있기 때문에, 학습하고자 한다면 쉽게 리눅스의 작동 과정을 볼 수 있을 것이다. 이러한 개방성은 리눅스가 많은 이의 관심을 끌게 만든 핵심 요소일 것이다. 리눅스는 처음부터 컴퓨터, 스마트폰 등 다양한 분야에서 사용되는 안정적이고 안전한 시스템이었으며, 많은 작업을 빠르게 수행할 수 있고 비용 효율적이므로 현재도 많은 선택을 받고 있다. 기술이 계속 발전함에 따라, 그리고 사람들이 그것을 공유함에 따라 리눅스는 계속 발전하며 중요한 위치를 유지할 것이다. 개인적으로는 그것이 리눅스의 힘이라고 본다.

 

* 윈도우 같은 다른 운영체제로 리눅스를 이중 부팅할 수 있다. 리눅스를 설치하는 동안 리눅스용 별도 파티션을 할당할 수 있으며, GRUB과 같은 부팅 관리자를 사용하면 컴퓨터를 시작할 때 부팅할 운영체제를 선택할 수 있다. 실제로 나도 대학교 강의 시간을 통해 내 노트북에 이런 식으로 리눅스를 설치하여 사용을 경험한 바 있다.

 

1.1 리눅스의 핵심 구성요소

ㄱ. 커널

커널은 계속 말했듯, 리눅스 기반 운영체제의 핵심이다. 메인 메모리에 상주하면서 사용자 프로그램을 관리하고, 컴퓨터의 공통 하드웨어 리소스를 가상화하여 각 프로세스에 가상 리소스를 제공한다. 이렇게 하면 마치 하나의 프로세스만이 가동되는 것처럼 보이게 된다. 또한, 커널은 서로 다른 프로세스 간의 충돌을 방지하고 가능한 완화하는 역할도 담당한다. 그밖에도 메모리, 입출력, 파일 관리 등을 수행한다.

 

ㄴ. 셸

셸은 리눅스 운영체제의 사용자 인터페이스로, 명령어 해석기/번역기라 할 수 있다. 사용자 명령의 입출력을 수행하며, 그에 따라 프로그램을 실행한다. 앞서 인터페이스라는 것에 대한 이해를 돕자면, 셸은 사용자와 커널 사이를 연결해주는 역할을 하는 것이다. 그래서 사용자의 요청을 커널로 전달한다. 셸의 종류도 다양한데, 리눅스 표준 셸인 bash 셸이 있고, borune 셸,  C 셸, TC 셸, korn 셸 등이 있다.

 

ㄷ. 파일 시스템

여러 가지 정보를 저장하는 기본적인 구조이며, 시스템 관리를 위한 기본 환경을 제공하고, 계층적인 트리 구조 형태를 갖는다.

 

그밖에 리눅스는 공유 라이브러리 또는 시스템 라이브러리 라고도 하는 것을 이용해 운영체제의 다양한 기능을 구현한다. 이러한 라이브러리에는 애플리케이션이 특정 작업을 수행하는 데 사용할 수 있는 코드가 포함되어 있다. 코드가 이미 포함되어 있으니 굳이 개발자는 동일한 코드를 반복적으로 작성할 수고를 덜게 되고, 시간과 노력을 절약하게 된다. 즉, 시스템 라이브러리는 애플리케이션과 커널 간의 인터페이스 역할을 하는 것이다. 또한, 하드웨어 계층도 있는데, RAM, HDD, CPU 및 입출력 장치와 같은 컴퓨터의 모든 물리적 구성 요소를 포함하는 것이다. 시스템과 응용 프로그램이 제대로 작동하는 데 필요한 리소스를 제공하는 곳이기도 하다.

 

2. 리눅스의 특징

ㄱ. 다중 사용자

리눅스는 여러 명의 사용자가 네트워크를 통해 접속하여 컴퓨터 시스템을 사용할 수 있는 다중 사용자 환경을 지원한다. 따라서 사용자별 권한 관리와 자원 관리가 가능하다. 사실 권한 관리가 가능한 것은 당연해야 하는 거고, 여기서 권한과 자원 관리를 어떻게 하느냐가 중요할 것이다.

 

ㄴ. 다중 작업

다중 작업이라는 말이 와닿지 않으면, 멀티 태스킹으로 이해하면 편하다. 물론 대다수 PC 용어가 그렇긴 하다만, 영어로 바꿨을 때 이해가 빠를 수 있다는 점은 참 신기하긴 하다. 하여튼, 이것은 여러 개의 프로세스를 동시에 실행시켜 CPU를 스케줄링하여 사용할 수 있다. 여러 개의 프로세스가 보통 동시에 실행되곤 하기 때문에 각 프로세스 간 작업 순서 조정을 하게 된다. 이러한 스케줄링은 기본적으로 시간 사용량만큼 자원을 할당하여 사용할 수 있게 하는 시분할 시스템을 지원한다.

 

ㄷ. 다중 처리기

컴퓨터 시스템에 한 개 이상의 CPU가 탑재되어 있는 경우, 여러 개의 CPU를 지원해 주는 다중 처리기를 지원하며 작업을 병렬적으로 처리할 수 있고, 이는 시스템을 효율적으로 사용할 수 있는 선택지가 될 것이다. ㄱ, ㄴ, ㄷ에 이르기까지 설명을 보면 알 수 있겠지만, 리눅스는 성능 측면에서도 우수한 운영체제라 할 수 있다.

 

ㄹ. 다중 플랫폼 및 POSIX 호환

계속해서 다중 다중을 이야기하게 되는데, 리눅스는 여러 종류의 CPU를 지원한다. 또한, 리눅스는 POSIX 표준을 따른다. POSIX는 운영체제 간 호환성을 유지하기 위한 표준을 말한다. 사실 아무리 성능이 좋아도 여러 PC에서 쓰일 수 없다면 말짱 도루묵일 것이다. 

 

ㅁ. 계층형 파일 시스템

리눅스 파일 시스템은 루트를 기반으로 하여 하위 디렉터리를 이루는 계층형 파일 시스템으로 이루어져 있다. 따라서 디렉터리를 쉽게 추가하고 관리할 수 있으며, 파일 시스템을 효율적으로 관리할 수 있다. 이에 대한 내용은 이전 파일 시스템 설명글에서도 기술한 바 있다. 그런데 사실 이건 리눅스만의 특징은 아닌데, 윈도우나 유닉스에서도 계층형 파일 시스템을 찾을 수 있다.

 

ㅂ. 우수한 네트워킹

리눅스의 강력한 네트워킹 기능은 다양한 프로토콜을 지원하며, 리눅스 설치 이후에 IP 주소, 게이트웨이, 서브넷 등을 섲렁하면 바로 네트워크를 사용할 수 있다. 유독 네트워크 친화적인 운영체제인 편이다. 사용자 친화적이진 않지만 말이다.

 

ㅅ. 오픈 소스 및 빠른 업데이트

리눅스의 가장 큰 강점이 오픈 소스 운영체제라는 것이다. 소스 코드는 누구나 쉽게 사용할 수 있으며, 권한 없이도 누구에게나 코드를 제공, 수정 및 배포할 수 있다. 또한 리눅스의 소프트웨어 업데이트는 쉽고 자주 수행된다. 

 

ㅇ. 보안성

보안 측면에서 리눅스는 다른 운영체제들에 비하면 아주 안전하다고 말할 수 있다. 물론 100% 안전한 운영체제란 세상에 앞으로도 존재하지 않을 것이고, 상대적으로 아주 안전한 운영체제란 말이다. 악성 코드 측면에서도 다른 운영체제보다 취약점이 적기 때문에 특별히 백신 소프트웨어를 필요로 하지는 않는다.

 

ㅈ. 다양한 리눅스 배포판

위에서도 말했듯, 600개가 넘는 리눅스 배포판이 존재한다. 각 조직이나 시스템의 요구사항이나 취향에 맞게 골라서 선택하면 된다. 또한, 리눅스는 상당히 유연한 운영체제에 속하는데, 전체 리눅스 제품군을 설치할 필요는 없다. 필요한 구성 요소만 설치하면 된다. 이것은 리눅스 배포판의 여러 차이를 이해하는 데 도움이 될 것이다.

 

728x90

'IT보안 학습' 카테고리의 다른 글

커버로스(Kerberos) 인증 총정리  (1) 2023.12.28
리눅스 부팅 총정리  (0) 2023.12.28
RAID 총정리  (1) 2023.12.27
FAT, NTFS, EXT 총정리  (1) 2023.12.27
유닉스 파일 시스템 구조 총정리  (1) 2023.12.26