본문 바로가기

프로그래밍 학습/보안 이론

[정보보안기사 필기] 유닉스 및 리눅스 운영체제 특징 및 주요기능

728x90

유닉스

개념 : 유닉스는 AT&T를 통해 상업적으로 허가해주는 SVR(System V Release) 계열과 버클리 대학에서 나온 연구 개발 운영체제인 BSD 계열로 크게 나누어 발전해 왔다. 점차 각자의 고유한 특성을 가지게 되었으며 이후 POSIX를 통하여 SVR, BSD에서 동시에 동작하는 표준을 제공하여 어러 시스템에서 동작하는 프로그램을 만들수 있게 되었다.


운영체제로써의 유닉스 특징

- 대화식 운영체제(Shell) : 사용자에게 명령어를 입력받기 위해서 유닉스는 쉘 프롬프트를 화면에 나타낸다. 프롬프트가 나타난 상태에서 사용자가 명령어를 기술하면 그 명령어는 명령어 해석기(Shell)를 통하여 시스템에 전달되고 시스템은 명령어를 처리하고 정상여부 및 고장 원인에 대한 답변도 알려주어 시스템과 대화하는 방식으로 사용된다.


- 멀티태스킹 : DOS와의 커다란 차이점인 멀티태스킹은 하나의 명령어 처리가 완료되지 않은 상태에서 다른 명령어를 처리할 수 있다.


- 멀티유저환경 : 멀티태스킹과 같은 기능이 가능함으로써 멀티유저 시스템으로 쓰여 질수 있는 것이다. 멀티 유저는 다중 사용자라는 뜻으로 여러 사용자가 시스템을 동시에 사용할 수 있도록 되어 있다.


- 계층적 파일 시스템 : UNIX 파일시스템은 트리구조로 구성되어 있는데 이 트리는 디렉토리이다.


- 이식성(Portability) : 하드웨어의 종류에 상관없이 운영되는 특성


- 유연성 : 동일 기종 간 또는 타기종 간의 통신상의 유연성을 가지고 있다.


- 호환성 : 타 기종에 자유로이 사용되므로 호환성이 높다.


- 입출력 방향 전환 및 파이프 기능 : 파일로 부터 직접 파일내용을 입출력할 수 있고 2개 이상의 명령어를 연결하여 다음 명령어의 입력값으로 지정할 수도 있다.


- 보안 빛 보호기능


- 각종 디바이스의 독립성 : 모든 주변장치는 하나의 파이로 간주된다.


쉘(Shell)의 기능

- 사용자가 입력하는 명령을 읽고 해석을 하며 사용자가 프로그램을 수행하고 프로세스들이ㅡ 파이프라인을 만들고 출력을 파일에 저장하며 동시에 하나 이상의 프로그램이 수행되도록 한다. 이처럼 명령어 해석기로서의 역할뿐만 아니라 쉘은 프로그래밍 언어이기도하여 쉘이 해석할 수 있는 스크립트(script)라는 프로그램을 작성할 수 있고 유닉스 명령뿐만 아니라 특별한 쉘 프로그래밍 언어도 포함할 수 도 있다.


- 쉘프로그램은 간단하지 않는 설정사항을 반복적으로 수행하여야 하는 경우나 정기적인 시스템 관리업무 등을 자동으로 수행하는 경우에 자주 사용하며 정기적인 쉘프로그램 수행을 위해서는 crontab에 등록한다.


쉘(Shell)의 종류

- sh, csh, ksh


리눅스 특징

- 오픈소스 운영체제, 다중 사용자 환경, 다중작업 및 가상터미널 환경, GUI 방식의 X윈도우, CPU에 구애 없는 운영체제, 강력한 네트워크 환경, 다양한 드라이버 지원


- 종류 : RedHat, Fedora, ContOS, Ubuntu


X-윈도우 시스템

개념 : 리눅스를 비롯해 대부분의 유닉스에 채용되어 있는 혁신적이면서 네트워크 투명성을 보장하는 그래픽 환경 기반의 시스템 소프트웨어이며 현재의 리눅스에 있어 표준으로 사용되는 것은 XFree86 프리웨어 프로그램이다. X 윈도우 시스템은 서버/ 클라이언트로 구성되어 있으며 X 프로토콜에 의해 상호작용이 이루어진다.


특징 

- 네트워크 기반의 그래픽환경

- 뛰어난 이식성

- 스크롤바, 아이콘, 색상 등의 그래픽 환경에 필요한 자원들이 특정한 형태로 정의되어 있지 않다.

- 서로 다른 이 기종을 함께 사용한다.

- 디스플레이 장치에 의존적이지 않다.

- 서버 클라이언트 방식 : 클라이언트는 서버로부터 키보드나 마우스 입력같은 사용자의 입력을 얻을 수 있다. X클라이언트는 X서버가 제공하는 기능들을 이용하도록 작성된 하나의 응용프로그램이다. 

- 통신을 위해 X프로토콜을 사용한다.


파일시스템 구조

- 부트 클록 : 디스크이 가장 첫 번째에 위치하는 블록, 운영체제 기동에 필요한 부팅에 필요한 정보저장

- 슈퍼 블록 : 전체 파일시스템 정보를 저장

- I-Node : 개별 파일, 디렉터리에 대한 정보 저장( 파일소유자, 파일타입, 접근권한, 사이즈)

- Data 블록 : 실제 파일에 데이터를 저장하는 영역