Blog
스터디
infiniteloop
서버 운영에 필요한 리눅스 기본 지식

서버 운영에 필요한 리눅스 기본 지식

데몬(Daemon)이란?

  • 직접적인 제어를 받지 않고 백그라운드 프로세스로 실행되는 컴퓨터 프로그램을 의미함
  • 데몬은 오래 사는 프로세스를 말하고, 보통은 시스템이 부팅될 때 같이 켜지고 종료될 때 같이 끝남

데몬이 실행되는 방식

  • standalone 방식 : 부팅 시에 실행되어 메모리에 계속 상주하면서 들어오는 요청을 처리
    • 응답시간이 빠르다는 장점이 있고 메모리 공간을 많이 차지 한다는 단점이 있음
    • ex: Apache HTTP Server, Nginx
  • inetd 방식 : 메모리에 계속 상주하는 것이 아닌, 클라이언트의 요청이 들어왔을 때 프로세스가 실행되고 자동으로 종료
    • 응답시간이 오래 걸린다는 단점이 있고 메모리 관리가 효율적이라는 장점이 있음
    • ex: FTP, Telnet

데몬을 관리하는 방법

  • service
    • 기본적으로 systemctl을 랩핑한 래퍼 스크립트
    • Ubuntu 계열의 Upstart나 initctl 명령에 대한 래퍼였지만 systemctl에 대한 래퍼이기도 함
  • systemctl
    • 서비스를 좀 더 세부적으로 관리할 수 있으며 부팅 시 자동 실행을 지원하는 등 더 많은 기능을 제공

Linux에는 무엇이 포함되있나?

  • Bootloader
    • 부팅 시에 실행되는 프로그램으로, 커널을 메모리에 로드하고 실행하는 역할을 함
    • ex: GRUB, LILO
  • Kernel
    • 운영 체제의 기본 구성 요소 중 하나로 메모리 관리 및 프로세스 관리, 하드웨어와 소프트웨어의 인터페이스 역할등을 수행
  • Init
    • 리눅스 커널 부팅이 완료된 뒤 실행되는 첫 번째 프로세스이며 커널이 직접 실행하는 유일한 프로세스
    • init은 부모 프로세스를 가지지 않는 유일한 프로세스인 동시에 모든 프로세스의 조상이 됨
    • init의 역할 👇

SELinux(Security-Enhanced Linux)

  • SELinux에는 관리자가 시스템에 액세스할 수 있는 사용자를 효과적으로 제어하기 위한 Linux용 보안 아키텍처임
  • 특정 프로세스가 파일과 같은 객체에 대한 액세스를 요청하면 SELinux는 AVC(Access Vector Cache)를 통해 해당 프로세스에 대한 액세스 권한을 확인하고 결정함
  • SELinux는 DAC(Disk Access Control)와 MAC(Mandatory Access Control)를 결합한 형태로, DAC사용자가 파일에 대한 액세스 권한을 결정하는 반면 MAC시스템 관리자가 파일에 대한 액세스 권한을 결정
    • MAC 시스템에서는 엑세스 관련 관리 정책이 설정되어 있기 때문에 홈 디렉토리의 DAC 설정이 변경되도 다른 사용자나 프로세스가 디렉토리에 액세스하지 못함
    • 예를 홈 디렉토리의 DAC 권한이 모두 읽기 가능으로 설정되었어도 SELinux 정책이 이를 제한하면 다른 사용자나 프로세스는 접근할 수 없음
  • 기본적으로 permissive mode, enforcing mode, disabled mode가 있음
    • permissive mode : SELinux가 액세스 권한을 검사하지만 액세스 권한을 강제하지 않음
    • enforcing mode : SELinux가 액세스 권한을 검사하고 액세스 권한을 강제함
    • disabled mode : SELinux가 비활성화된 상태

FileDescriptor

Reference