CS 및 필요 지식

리눅스마스터 1급 (2022-03-12 기출문제) 오답노트 1과목

hyecozy 2025. 1. 15. 22:37

많이 틀려서 과목별로 나눠야 한다는 웃픈 사실 ^-^

 

 

1. 파일에 대한 문제

1) /etc/hosts : 호스트 이름과 IP 주소를 매핑하는데 사용되는 로컬 네임 서비스 파일. 이 파일은 DNS보다 먼저 참조되며, 특정 호스트 이름을 IP 주소로 빠르게 변환하기 위해 사용.

2) /etc/sysconfig/network : 리눅스 시스템에서 네트워크 설정을 정의하는 데 사용되는 파일. 시스템 부팅 시 네트워크 서비스와 관련된 기본 설정을 적용하는 역할을 함. 시스템의 네트워크 서비스 동작을 제어, 네트워크 인터페이스 및 기본적인 네트워크 설정 관리, 특정 기능 (ex. IPv6, 호스트 이름) 활성화 여부 설정

3) /etc/resolv.conf : 이 파일은 DNS 서버의 주소를 설정하는 파일. 

4) /etc/named.conf : DNS 서버 (BIND)의 핵심 설정 파일로, 서버의 동작 방식과 영역(zone)을 관리함. 수정 후에는 항상 설정 검증(named-checkconf)과 서버 재시작이 필요.

 

3)은 DNS 클라이언트의 설정 파일로서, 시스템이 도메인 이름을 IP로 변환할 때 사용할 DNS 서버를 지정해줌. 사용자 측 시스템에서 DNS 서버를 지정할 때 사용한다는 점에서 4)와 차이가 있음

 

+ DNS 서버란 : 도메인을 IP 주소로 변환해 주는 인터넷의 전화번호부 역할을 하는 서버

 

 

 

2. 사설 IP 주소 대역 문제

+ 사설 IP 주소란? 내부 네트워크에서만 사용 가능한 IP 주소. 외부 인터넷에 직접 연결되지 않으며, 네트워크 내부의 장치 간 통신에 사용됨.

 

+ 사설 IP 주소 대역 (암기)

- 10.0.0.0 ~ 10.255.255.255

- 172.16.0.0 ~ 172.31.255.255

- 192.168.0.0 ~ 192.168.255.255

 

+ 공인 IP와 사설 IP를 연결해 주는 장치 : NAT(Network Address Translation)장치가 사설 IP를 공인 IP로 변환해 인터넷에 연결해 줄 수 있음. 일반적으로 라우터가 NAT 기능을 수행함.

 

 

 

 

4. 명령어 문제

1) ip :

 역할 - 네트워크 설정 및 상태를 확인하는 명령어

 주요기능 - ip 주소 및 네트워크 장치 설정, 라우팅 테이블 확인, 네트워크 인터페이스 상태 확인 및 관리

ex. ip addr : 네트워크 인터페이스의 ip 주소 확인

 

2) ifconfig :

 역할 - 네트워크 인터페이스 설정 및 관리 (구형 명령어)

 주요기능 - ip 주소 및 네트워크 설정 확인, 네트워크 인터페이스 활성화 및 비활성화, 네트워크 인터페이스 이름 변경

ex. ifconfig : 모든 네트워크 인터페이스 정보 출력

 

3) route : 

 역할 - 라우팅 테이블 관리 및 확인 (구형 명령어)

 주요기능 - 라우팅 경로 확인, 라우팅 경로 추가/삭제

ex. route : 현재 라우팅 테이블 확인

 

4) ss :

역할 - 네트워크 소캣 상태 확인 (netstat의 대체 명령어)

주요기능 : TCP, UDP 소캣 연결 확인, 네트워크 연결 상태 (LISTEN, ESTABLISHED 등) 확인, 포트별 트래픽 확인

ex. ss : 모든 소캣 연결 확인

 

+ 라우팅 테이블 : 네트워크 장치(ex. 컴퓨터, 라우터 등)가 데이터 패킷을 어디로 보내야 하는지 결정하기 위해 사용하는 경로 정보 목록. 쉽게 말해 어떤 목적지(IP 주소)로 가는 데이터가 어느 경로 (게이트웨이, 인터페이스) 를 통해 전달되어야 할지 정의한 표.

$ ip route : 라우팅 테이블 확인 명령어

 

+ 네트워크 인터페이스 : 컴퓨터나 네트워크 장치가 네트워크에 연결하고 통신할 수 있도록 하는 하드웨어 또는 소프트웨어 구성 요소. 즉, 컴퓨터와 네트워크를 연결하는 다리 역할을 함.

  * 주요역할 1. 데이터 송수신 : 네트워크를 통해 데이터를 주고받음

                    2. IP 주소 부여 : 네트워크 인터페이스는 특정 IP 주소를 가지고 있어, 네트워크 상에서 식별됨

                    3. 네트워크 관리 : 데이터를 어떤 네트워크로 보내고 받을지 관리

  * 네트워크 인터페이스 종류 : 물리적 인터페이스 (유선/무선 네트워크 인터페이스), 가상 인터페이스, 특수 인터페이스

 

+ 소캣 : 네트워크에서 두 장치 간에 데이터를 주고받기 위한 통신의 끝점(End Point). 양방향 통신. 프로토콜 기반. 이때 프로토콜은 주로 TCP/IP(신뢰성 있는 연결)와 UDP(빠른 연결) 프로토콜을 기반으로 동작함.

 

+ 프로토콜 : 컴퓨터 네트워크에서 데이터를 주고받는 규칙과 절차의 집합. 서로 다른 장치 (컴퓨터, 서버 등)가 원활하게 통신하기 위해 따라야 하는 약속이라고 생각하면 됨.

OSI 7계층 모델 어쩌고 하는 것이 프로토콜의 기본 구조에 대한 것임. OSI  7계층 모델 말고 TCP/IP 모델도 있음.

* 주요 프로토콜과 역할

 ** 응용 계층 프로토콜 : HTTP/HTTPS : 웹 브라우저와 서버 간의 데이터 전송 규칙. HTTPS는 보안을 강화한 버전.

 FTP (File Transfer Protocol) : 파일을 서버와 클라이언트 간에 전송하는 프로토콜

SMTP/IMAP/POP3 ; 이메일을 송수신하기 위한 프로토콜

 --> SMTP : 이메일 전송, IMAP : 서버에서 이메일 읽기, POP3 : 이메일 다운로드

** 전송 계층 프로토콜

TCP(Transmission Control Protocol) : 연결 지향 프로토콜로, 데이터를 신뢰성 있게 전달. 데이터 전송 확인 (ACK), 순서보장

UDP(User Datagram Protocol) : 비연결 지향 프로토콜로, 빠른 전송이 필요한 경우 사용. 신뢰성 보장 없음. 

** 인터넷 계층 프로토콜

IP : 데이터 패킷을 목적지 IP 주소로 전달

ICMP : 네트워크 진단 및 오류 메시지 전송

ARP : IP 주소를 MAC 주소로 변환

** 네트워크 인터페이스 계층 프로토콜

Ethernet ; 유선 네트워크에서 데이터 전송

Wi-Fi : 무선 네트워크에서 데이터 전송

 

5. 게이트웨이 주소값 문제

 

6. 명령어 문제

[root@www ~]

access control enabled, only authorized clients can connect SI :lo caluser:root

--> X Window System에서 사용되는 디스플레이 서버와 클라이언트 간의 연결을 설정하는 것을 보여줌.

1) xhost : 디스플레이 서버에 접근할 수 있는 클라이언트 목록을 관리

2) xauth : X Window System에서 인증을 관리하는 데 사용되는 명령어

3) xrandr : X Window System에서 디스플레이 해상도와 관련된 설정을 변경하는 데 사용되는 명령어

4) xmodmap : X Window System에서 키보드 매핑을 변경하는 데 사용되는 명령어

 

7. 명령어 문제

1) !al : 바로 이전에 실행한 "al"이라는 명령을 재실행

2) !?al? : 최근 실행한 명령 중에서 "al"이라는 문자열이 들어간 명령어를 찾아서 재실행

3) !!al : 바로 이전에 실행한 명령 중에서 al로 시작하는 명령을 재실행하는 것이므로, al이 들어간 명령을 찾을 수 없을 수도 있음

4) history al : 이전에 실행한 모든 명령어 중에서 "al"이 들어간 명령어를 보여주는 것이므로, 해당 명령어를 재실행할 수는 없음.

 

9. 시그널 문제

1) SIGTSTP :  Ctrl + Z 를 누르면 발생하는 시그널로, 현재 실행 중인 프로세스를 일시 중지시키는 시그널. 이후에 해당 프로세스를 다시 실행시키기 위해서는 "fg" 명령어를 사용해야 함

2) SIGKILL : 프로세스를 강제 종료 시키는 시그널로, 해당 프로세스가 사용 중인 자원을 모두 해제 함.

3) SIGTERM : 프로세스에게 종료를 요청하는 시그널로, 해당 프로세스가 종료될 때까지 기다림.

4) SIGQUIT : Ctrl + 를 누르면 발생하는 시그널로, 해당 프로세스를 종료 시키고 코어 덤프(core dump파일을 생성.

 

+ 시그널 : 운영 체제에서 프로세스 간에 비동기적으로 정보를 전달하는 방법. 보통 프로세스에 특정 작업을 요청하거나 알림을 보내는 역할을 함. 

리눅스와 유닉스 시스템에서 시그널은 프로세스에 특정 이벤트나 상태 변화를 알려주는 데 사용됨.

ex. 프로세스가 종료되거나 일시중지 되었음을 알리거나, 특정 오류가 발생했을 때 이를 처리하도록 지시하는 방식.

 

 

 

10. 포어그라운드 동작 중인 프로세스를 백그라운드로 전환하는 방법

4) Ctrl + z를 눌러 작업을 일시 정지 시킨 후에 bg 명령을 실행한다.

: Ctrl + z 가 현재 실행 중인 프로세스를 일시정지 시키는 신호. 이 신호를 입력하면 프로세스가 일시 정지되고, 쉘 프롬프트가 나타난다. 이 상태에서 bg 명령을 실행하면 일시 정지된 프로세스를 백그라운드로 전환할 수 있다. 이렇게 하면 해당 프로세스가 백그라운드에서 실행되면서 쉘 프롬프트를 계속 사용할 수 있다.

 

+ 포어그라운드, 백그라운드는 프로세스의 실행 방식과 사용자와의 상호작용 방식을 구분하는 개념.

 

포어그라운드 동작 : 사용자가 터미널에서 직접 실행하고, 실행 중인 동안 터미널을 점유하는 프로세스. 사용자가 입력한 명령어가 완료될 때까지 터미널이 다른 명령을 입력받지 못함. 

백그라운드 동작 : 터미널에서 실행되지만, 터미널을 점유하지 않고 독립적으로 실행되는 프로세스. 사용자는 프로세스를 싱행하면서 동시에 다른 작업을 계속 할 수 있음.

 

 

 

11. 프로세스 간 통신 방법

1) Shared Memory : 메모리 공간을 공유하는 방식.

2) Message Queue : 프로세스 간 통신(IPC, Inter-Process Communication)에서 사용되는 매커니즘으로 비동기적으로 데이터를 주고받기 위해 메시지를 저장하고 전달하는 구조.

3) Desktop Bus : 윈도우 시스템에서 사용되는 통신 방법으로, 윈도우 운영체제에서 실행되는 프로세스들 간에 데이터를 주고받을 수 있도록 해준다. 이 방법은 메모리 공간을 공유하는 것이 아니라 메시지를 전송하는 방식으로 통신을 한다.

4) Semaphore : 메모리 공간을 공유하는 방식.

 

 

 

12. RAID-5 문제

10GB 용량의 하드 디스크를 6개 이용해서 RAID-5를 구성했을 때 실제 사용할 수 있는 용량

--> 40GB = 총 용량 10GB X 5 - 10GB : 여기서 빼기한 10GB는 패리티 정보를 담당하는 디스크

 

+ RAID(Redundant Array of Independent Disks) 기술의 한 종류로, 데이터를 안전하게 저장하면서 성능과 신뢰성을 모두 확보하려는 목적의 디스크 배열 방식. RAID-5는 패리티를 활용하여 데이터 복구 기능을 제공하며, 데이터 무결성과 고가용성을 제공.

최소 디스크 개수는 3개이며, 1개의 디스크 장애 허용. 읽기 성능은 빠르지만 쓰기 성능은 패리티 계산 때문에 다소 느림. 

 

 

 

13. 명령어 문제

1) systemctl start sshd : ssh 데몬을 시스템 부팅 시에 구동되도록 설정하는 명령. 이 명령은 systemd 서비스 관리자를 사용하여 sshd 서비스를 부팅 시 자동으로 시작하도록 설정한다. 따라서 시스템이 부팅될 때마다 sshd가 자동으로 시작하도록 설정한다. 따라서 시스템이 부팅 될 때마다 sshd가 자동으로 시작되어 원격으로 접속할 수 있게 된다.

2) systemctl enable sshd

3) systemctl is-enabled sshd : sshd 서비스가 부팅 시 자동으로 시작되는지 여부를 확인하는 명령

4) systemctl is-active sshd : sshd 서비스가 현재 실행 중인지 여부를 확인하는 명령

 

+ ssh란 (Secure Shell) 원격 컴퓨터에 안전하게 접속하고 명령을 실행하거나 파일을 전송하기 위한 네트워크 프로토콜. 통신 내용이 암호화되어 도청, 중간자 공격, 데이터 위조를 방지.

+ ssh 데몬이란 ssh 프로토콜을 사용하여 원격 접속 및 관리 기능을 제공하는 서버 측 서비스(데몬).

+ 데몬이란 서비스와 비슷하지만 조금 다름.

** 데몬 : 백그라운드에서 실행되는 프로그램이나 프로세스. 직접 실행되거나 스크립트로 관리. 이름에 d가 포함되는 경우가 많고, 시스템 리소스 관리와 네트워크 처리와 백그라운드 작업 실행이 주요 역할.

** 서비스 : 특정 기능을 제공하는 시스템 관리의 단위로, 주로 데몬 형태로 동작. systemctl, Windows 서비스 관리자 등을 통해 관리. 사용자에게 특정 기능(데이터베이스, 웹서버 등)을 제공.

결론적으로 데몬은 프로세스 자체를 가리키는 용어에 가깝고 서비스는 제공되는 기능을 가리키는 좀 더 추상적인 용어.

서비스 = 데몬 + 관리 체계 라고 이해할 수 있음.

예를 들어 sshd는 SSH 프로토콜을 처리하는 데몬이지만, ssh라는 이름으로 관리되며 서비스로 간주됨.

 

 

 

14. 명령어 문제

1) systemctl get-default multi-user : 

2) systemctl set-default multi-user :

3) systemctl get-default graphical : 

4) systemctl set-default graphical : 시스템 부팅 시 X 윈도 모드로 부팅하도록 설정하는 명령

--> "multi-user" 런레벨은 텍스트 모드로 부팅, "graphical"런레벨은 X 윈도 모드로 부팅

+ 런레벨 : 시스템이 시작될 때 실행되는 서비스와 프로세스의 그룹을 정의

+ systemctl set-default : 기본 대상을 설정함. 대상은 부팅 시 시스템이 어떤 상태로 시작될지 결정. 예를 들어 GUI 환경(그래픽 모드)으로 부팅할지, CLI환경 (텍스트 모드)로 부팅할지를 설정할 때 사용됨

+ systemctl get-default : 현재 설정된 기본 대상을 확인함.

 

 

 

15. CentOS 7 버전에서 GRUB 환경 설정 파일을 수정한 후 변경된 내용을 저장하기 위해 사용하는 명령

1) grub

2) grub2-mkconfig : 얘가 정답. 이 명령은 /boot/grub2/grub.cfg 파일을 생성하고 GRUB 부트로더가 부팅할 때 사용하는 메뉴를 구성함.

3) grub2-install

4) grub2-probe

 

+ GRUB(GRand Unified Bootloader)은 운영체제를 부팅하기 위한 부트 로더임. CentOS 7에서는 GRUB 2가 기본 부트 로더로 사용됨.

GRUB는 시스템 부팅 시 가장 먼저 실행되어 운영체제 커널을 로드하고, 필요에 따라 여러 운영 체제를 선택하여 부팅할 수 있게 해주는 중요한 소프트웨어.

 

 

 

16. 리눅스 배포판 문제

1) Kali Linux : 해킹 및 보안 테스트를 위한 전문적인 도구들을 포함하고 있어 보안 전문가나 해커들이 많이 사용하는 배포판.

2) Rocky Linux : RHEL(Red Hat Enterprise Linux) 100% 호환성을 목표로 한 안정적이고 무료의 엔터프라이즈급 배포판.  

3) Arch Linux : 롤링 릴리즈 모델을 통해 항상 최신 소프트웨어와 패키지를 제공

4) Ubuntu : 사용자 친화적이고 초보자부터 전문가까지 모두 사용할 수 있는 데스크톱 중심 배포판.

 

 

 

17. 미닉스 운영체제 문제

1) 빌 조이 : BSD 유닉스 창시자 중 1명. vi 편집기와 Sun Microsystems의 공동 설립자로 유명.

2) 데니스 리치 : C언어 개발자이자 유닉스 운영체제를 공동으로 개발한 컴퓨터 과학의 선구자.

3) 리처드 스톨먼 : GNU 프로젝트를 시작하여 자유 소프트웨어 운동을 이끈 인물로 GPL 라이선스의 창시자.

4) 앤드류 스튜어트 타넨바움 : 미닉스 운영체제 개발자

 

18. 운영체제 기술 문제

1) 스왑 : 메모리가 부족할 때 디스크 일부를 가상 메모리로 사용하는 기술. RAM의 과부하를 줄이고 프로그램을 계속 실행가능하게 함.

2) 파이프 : 한 명령어의 출력을 다른 명령어의 입력으로 연결하는 기능.

3) 리다이렉션 : 명령어의 입/출력을 파일이나 다른 명령어로 전달하는 기능.

4) 라이브러리 : 프로그램에서 특정한 기능을 하는 루틴(Routine)들을 모아놓은 것으로 효율적인 메모리 사용뿐 아니라 디스크 관리에도 유용

 

19. 라이선스 문제

1) MPL : 2차적 저작물 소스 코드의 비공개가 불가능한 라이선스

2) MIT : 매우 간단하고 자유로운 라이선스. 소프트웨어를 수정/배포 하는 데 제한이 없음. 저작권 고지와 라이선스 내용만 포함하면 상업적 이용도 가능.

3) Apache : MIT와 비슷하나 특허 권리에 대한 명시적인 조항이 추가됨. 수정된 소스 코드에 대해 변경 사항을 명시해야 함. 상업적 이용 가능. 소스코드 공개 의무는 없음.

4) BSD : 매우 자유로운 라이선스. 소스 코드 수정과 배포에 대한 제한이 거의 없음. 저작권 고지와 라이선스 고지만 포함하면 상업적 사용도 가능.

 

 

20. 프로그램 설명 문제

1) Docker ; 컨테이너화 기술로, 애플리케이션과 그 종속성을 격리된 환경에서 실행할 수 있도록 도와주는 플랫폼. 애플리케이션을 컨테이너라는 독립적인 단위로 패키징하여 이식성, 효율성, 확장성을 제공. 운영 체제에서 실행되는 프로그램을 가상화하는 대신 컨테이너 내부에서 애플리케이션과 환경을 함께 패키징

2) Ansible : 자동화와 구성 관리 도구로, 서버 관리 및 애플리케이션 배포 작업을 자동화하는 데 사용.

3) OpenStack : 클라우드 컴퓨팅 플랫폼으로, 퍼블릭/프라이빗 클라우드 환경에서 가상 머신과 스토리지, 네트워크 자원을 관리하는 오픈소스 소프트웨어.

4) Kubernetes : 구글이 개발한 것으로 컨테이너화 된 애플리케이션의 배포, 확장, 관리를 자동화하려고 한다.

 

+ 컨테이너 : 애플리케이션과 그에 필요한 모든 종속성, 라이브러리 설정 파일 등을 격리된 환경에서 실행할 수 있도록 패키징한 기술. 가상황와 유사하지만 하드웨어 리소스를 직접 가상화하는 대신 운영체재의 커널을 공유하며 더 가볍고 효율적임.