SELinux는 무엇이며 왜 사용하나요?
답변: 시스템 보안을 강화하기 위해 사용하며, 접근 권한을 강력히 제한합니다.
Daemon 프로세스란 무엇인가요?
답변: 백그라운드에서 실행되며, 사용자의 세션과 독립적으로 동작하는 프로세스입니다.
Systemctl과 Service의 차이는 무엇인가요?
답변: Systemctl은 systemd 기반, Service는 init.d 기반으로 동작합니다. systemd는 더 많은 기능을 제공합니다.
init.d와 systemd의 주요 차이점은 무엇인가요?
답변: systemd는 병렬 실행, 빠른 부팅, 의존성 관리를 지원합니다.
커널 로그를 확인하는 이유는 무엇인가요?
답변: 하드웨어 오류나 시스템 문제를 진단하기 위해 커널 로그를 확인합니다.
서버 성능 테스트를 어떻게 수행하나요?
답변: Apache Benchmark, sysbench, fio와 같은 도구를 사용합니다.
top 명령어의 주요 기능은 무엇인가요?
답변: CPU, 메모리, 프로세스 상태를 실시간으로 모니터링할 수 있습니다.
1. SELinux (Security-Enhanced Linux)
SELinux란?
리눅스 커널 레벨의 보안 모듈로, 프로세스와 사용자에 대한 강력한 접근 제어를 제공합니다.
보안 정책에 따라 파일, 프로세스, 네트워크 자원의 접근을 제어합니다.
CS 질문: SELinux의 주요 기능은 무엇인가요?
답변:
Mandatory Access Control(MAC)을 기반으로 접근 권한을 강화합니다.
프로세스가 예상치 못한 자원에 접근하려는 시도를 차단합니다.
시스템 침입 방지 및 악의적인 코드 실행을 방어합니다.
명령어 예시:
현재 상태 확인: getenforce
비활성화: /etc/selinux/config에서 SELINUX=disabled 설정 후 재부팅.
리눅스(Linux)
소프트웨어는 공개해서 사용해야한다, 무료로 사용 가능, 판매도 가능하다
리눅스란?
리눅스는 오픈 소스 기반의 유닉스(Unix) 계열 운영 체제입니다.
리눅스 커널을 기반으로 만들어졌으며, 다양한 배포판(Distribution)이 존재합니다.
안정성, 보안성, 커스터마이징 가능성 때문에 서버, 개발 환경, 임베디드 시스템 등에 널리 사용됩니다.
리눅스의 특징
오픈 소스: 누구나 소스 코드를 보고, 수정하고, 배포할 수 있음.
멀티유저 & 멀티태스킹: 여러 사용자가 동시에 접속 가능하며 여러 작업을 동시에 실행할 수 있음.
강력한 보안: 사용자 권한과 파일 권한 관리를 통해 높은 보안성을 제공.
다양한 배포판: Ubuntu, CentOS, Fedora, Debian, Arch Linux 등 다양한 사용 목적에 맞는 배포판 제공.
리눅스의 활용 분야
서버 운영 체제: 전 세계 웹 서버의 대부분이 리눅스 기반.
클라우드 플랫폼: AWS, Google Cloud, Azure 등 클라우드 서비스의 주요 OS.
macOS는 systemd를 사용하지 않으므로 systemctl 명령어는 지원되지 않습니다
macOS는 **launchd**와 **launchctl**을 사용하여 서비스를 관리합니다
# 서비스 시작
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
# 서비스 중지
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
# 서비스 상태 확인
sudo launchctl list | grep sshd
# 현재 실행 중인 모든 서비스 확인
sudo launchctl list
4. init.d vs systemd
init.d란?
과거 방식의 서비스 관리 시스템으로, SysVinit 기반입니다.
Linux 시스템의 부팅 과정과 서비스 관리(시작, 중지 등)를 담당합니다.
init.d는 단순히 여러 Bash 스크립트를 사용하여 서비스를 관리합니다.
작동 방식
부팅 시 /etc/init.d/ 디렉토리에 있는 스크립트를 순서대로 실행하여 서비스를 시작하거나 중지합니다.
스크립트는 각 서비스의 동작을 정의하며, 수동으로 작성해야 합니다.
특징
직렬 실행: 한 번에 하나씩 순차적으로 실행되므로 부팅 속도가 느립니다.
의존성 관리 부족: 서비스 간의 의존성을 명확히 정의하거나 관리하기 어렵습니다.
단순 구조: Bash 스크립트를 기반으로 동작하므로 이해하기 쉽지만, 확장성과 기능이 제한적입니다.
systemd란?
systemd는 현대적인 서비스 관리 시스템으로, init.d의 한계를 극복하기 위해 만들어졌습니다.
단순한 서비스 관리뿐만 아니라 병렬 처리, 의존성 관리, 타이머, 소켓 활성화 등을 지원합니다.
모든 서비스는 **유닛 파일(unit files)**을 통해 관리됩니다.
작동 방식
부팅 시 /etc/systemd/system/에 있는 유닛 파일에 따라 필요한 서비스를 병렬로 실행합니다.
서비스 간의 의존성을 확인하고 필요한 순서대로 실행하거나 중지합니다.
특징
병렬 실행: 여러 서비스를 동시에 실행하여 부팅 속도가 빨라집니다.
의존성 관리: 서비스 간의 관계를 명확히 정의하고 관리합니다(예: 네트워크가 켜진 후에만 서비스 실행).
다양한 기능: 타이머, 소켓 활성화, 장치 관리 등 다양한 시스템 기능을 지원합니다.
표준화된 구조: 모든 서비스는 .service 유닛 파일로 관리됩니다.
5. Kernel Log
Kernel Log란?
커널에서 발생하는 이벤트나 오류를 기록한 로그.
주로 시스템 디버깅 및 문제 해결에 사용됩니다.
명령어 예시:
커널 로그 확인: dmesg
실시간 로그 확인: journalctl -k
CS 질문: 커널 로그를 확인하는 이유는 무엇인가요?
답변:
하드웨어 오류, 드라이버 문제, 시스템 부팅 문제를 진단하기 위해 사용합니다.
커널(Kernel)
커널이란?
운영 체제의 핵심(Core) 구성 요소로, 하드웨어와 소프트웨어 간의 중재자 역할을 수행합니다.
하드웨어 자원(CPU, 메모리, 디스크, 네트워크 등)을 관리하고, 사용자 애플리케이션에 이러한 자원을 제공합니다.
커널은 운영 체제에서 가장 중요한 부분으로, 시스템 안정성과 성능을 결정짓는 요소입니다.
커널의 주요 역할
프로세스 관리 (Process Management)
CPU에서 실행되는 여러 프로세스를 관리합니다.
프로세스의 스케줄링(어떤 프로세스가 언제 실행될지 결정)을 담당합니다.
프로세스 간 통신(IPC, Inter-Process Communication) 및 동기화 처리.
메모리 관리 (Memory Management)
시스템 메모리(RAM)를 효율적으로 사용하도록 관리합니다.
메모리 할당 및 해제를 수행하며, 가상 메모리(virtual memory)를 지원합니다.
페이지 스왑(Swapping)을 통해 메모리 부족 문제를 해결합니다.
파일 시스템 관리 (File System Management)
파일 생성, 삭제, 읽기/쓰기 등 파일 관련 작업을 관리합니다.
다양한 파일 시스템(FAT32, ext4, NTFS 등)을 지원합니다.
장치 관리 (Device Management)
하드웨어 장치(CPU, GPU, 디스크, 네트워크 카드 등)와 소프트웨어 간의 인터페이스를 제공합니다.