본문 바로가기

System

리눅스 구조

리눅스의 기능

작업 관리자(Task Manager) 작업의 생성, 실행, 상태관리, 스케줄링, 시그널 처리, 프로세스 간 통신 등의 서비스를 제공한다.
메모리 관리자(Memory Manager) 세그먼테이션, 페이징, Swap 서비스를 통한 물리 메모리의 가상 메모리를 관리한다.
파일 시스템 관리자(File System Manager) 파일 생성/삭제, 접근 제어, 디렉터리 관리, 슈퍼블록 관리 등의 서비스를 제공한다.
네트워크 관리자(Network Manager) 소켓, TCP/IP, 프로토콜 스택 관리 등의 서비스를 제공한다.
장치 관리자(Device Manager) 디스크, 각종 카드, 외부 인터페이스 등을 제어하는 드라이버 관리 서비스를 제공한다.

 

리눅스 운영체제의 핵심 구성요소

커널(Kernel) : 주기억장치에 상주하면서 사용자 프로그램을 관리하는 운영체제의 핵심 역할을 한다. 커널은 프로세스와 하드웨어 장치, 파일 관리등을 한다.

쉘(Shell) : 명령어 해석기/번역기로 사용자가 입력한 명력을 해석하고 입출력을 수행한다. 셸은 여러 종류가 있으며 기본적으로 bash쉘이 있고 c쉘, korn쉘 zsh 등이있다. 쉘도 실행파일이며 /bin 디렉토리에서 쉘파일을 확인할 수 있다.

우분투 리눅스의 bash쉘

파일 시스템(File system) : 여러 가지 정보를 저장하는 기본 구조이다. 시스템 관리를 위한 기본 환경을 제공하고 파일들을 계층적으로 관리한다. ex) ohs 사용자의 홈 디렉토리 : /home/ohs > 루트 > home 디렉토리 > ohs 디렉토리 여기서 맨 앞의 '/'는 루트를 의미한다.

리눅스 명령 해석 과정

 

쉘의 환경변수

환경변수라는 것은 특정한 의미로 설정된 값을 의미한다. 환경변수의 값은 env 명령을 통해 확인할 수 있다. 윈도우에도 환경변수가 존재하며 환경변수는 간단한게 생각하면 터미널에서 명령만으로 특정 파일을 조작하고싶을 때 활용할 수 있다. 예를 들어 윈도우의 경우 python파일 설치 시 환경변수로 경로를 지정해주지 않으면 터미널에서 python을 사용할 수 없지만 환경변수에 python 실행파일의 경로를 지정해주면 터미널에서도 python을 사용할 수 있다.

grep으로 필터링하여 환경변수 출력

 

Shell Shock

명령어 해석기인 쉘에서 발생한 취약점이다. 리눅스 계열 및 MAC OS X 운영체제에서 사용되는 GNU Bash 쉘에서 발견된 취약점으로 해당 취약점은 악의적인 명령실행, 관리자 권한 획득 등을 할 수 있다. 쉘 쇼크는 리눅스 환경변수에 빈 함수를 넣으면 그 뒤에 오는 코드는 무조건 실행되는 심각한 버그로 CGI 스크립트를 통해서 공격을 수행할 수 있다. CGI 스크립트는 Common Gateway Interface의 약자로 웹상에서 사용자의 프로그램을 동작할 때 사용하는 스크립트이다. 쉘 역시 프로그램이기 때문에 해당 스크립트로 동작을 유도할 수 있고 동작 과정에 환경변수를 조작하는 명령에 취약점을 더해서 공격을 시도하는 것이다.

 

리눅스 파일 시스템

파일 시스템은 운영체제가 설치된 시스템에 운영체제 관련파일과 사용자 패키지, 각종 파일 등을 관리하는 것이다. 리눅스는 최상위 루트 디렉토리가 단 1개 존재하고 나머지는 그 아래 하위 디렉토리로 구성된다. vi, touch 등으로 생성한 파일은 텍스트 파일과 실행파일로 나뉠 수 있으며 여기서 실행 파일은 바이너리 파일로 분류된다. 바이너리 파일은 gcc등 컴파일러를 통해 만든 파일이다. 이러한 파일들을 묶어서 저장하기 위한 디렉터리가 존재한다. 윈도우 등에서 흔히 말하는 폴더이다. 그리고 루트 디렉토리 아래로 특수한 목적을 가진 디렉토리들이 존재하는데 예를 들어 하드웨어를 관리하기 위한 특수한 파일들이 모여있는 디렉토리는 /dev이고 로그 파일등은 /var에서 확인할 수 있다. 특수 파일에는 문자 단위로 기록된 문자단위 파일과 동일한 크기로 기록되는 블록단위의 특수파일로도 분류할 수 있다.

루트 파일 시스템 하드디스크 상에 적어도 하나의 파일 시스템이 존재한다. 시스템 프로그램과 디렉터리들이 포함된다.
일반 파일 컴퓨터가 수행 가능한 프로그램 파일이나 원시 프로그램 파일, 텍스트 파일 등 여러 파일들을 의미한다.
디렉터리 파일 다른 파일과 디렉토리들의 정보를 저장해두는 파일이다. 디렉터리 안에 다른 디렉터리들을 포함할 수 있다.
특수 파일 주변 장치에 연결된 파일로 하나 이상의 특수 파일을 가지고 있어야 한다.

 

반응형

'System' 카테고리의 다른 글

리눅스 Booting, Run level  (0) 2021.01.05
리눅스 파일 시스템 구조  (0) 2021.01.04
CPU 스케줄링 기법  (0) 2021.01.03
프로세스 관리(Process Management)  (0) 2021.01.03
운영체제(OS-Operating System)  (0) 2021.01.03