🚀 Linux 서비스 관리 개요
Linux 서버는 다양한 서비스를 제공하며, 클라이언트가 네트워크를 통해 서버의 서비스를 이용할 수 있도록 구성해야 해!
이 서비스들은 데몬(daemon) 형태로 백그라운드에서 실행되며, 클라이언트는 포트를 통해 특정 서비스에 접속하지.
🔹 서비스 실행 및 클라이언트 접속 과정
✅ 1) 필요한 서비스 모듈/패키지 설치
- 서비스가 기본적으로 설치되지 않았다면 **패키지 매니저(yum, apt 등)**를 사용해서 설치해야 해.
✅ 2) 설정/구성 파일 수정
- 서비스 실행 전, 설정 파일을 수정해야 할 수도 있어 (예: /etc/ssh/sshd_config).
- 서비스에 맞는 포트 변경, 접근 제어 설정 등을 조정할 수 있음.
✅ 3) 서비스 실행 및 관리
- 서비스 실행 명령어는 시스템의 서비스 관리 방식에 따라 다름.
✅ 4) 방화벽 및 SELinux 설정
- 서비스가 실행 중이어도 방화벽(Firewall)이나 SELinux 설정에 막혀 있다면 클라이언트가 접근할 수 없어 🚫
✅ 5) 서비스가 실행 중인지 확인
- 서비스가 제대로 실행되고 있는지 확인하려면 포트 상태를 체크해야 해 🔍
✅ 6) 클라이언트 접속 테스트
- 모든 설정이 끝났다면, 클라이언트에서 서버로 접속해 보자!
🔹 서버 서비스 데몬(Server Service Daemon) 개념
🔹 서버에서 제공하는 주요 서비스
- Mail(메일), Database(데이터베이스), Web(웹 서버), DNS, NIS, DHCP 등
- 이 서비스들은 데몬(daemon) 형태로 실행되며, 특정 포트(well-known port)를 열어두고 클라이언트의 요청을 기다림.
- 클라이언트 요청이 오면, 임의의 포트(dynamic port)로 연결하여 서비스 제공 → 이를 Passive 모드라고 함.
💡 예시) 웹 서버(Apache)
💡 예시) 데이터베이스 서버(MySQL)
🔹 데몬(daemon)의 종류
1️⃣ 단독(Standalone) 데몬
- 독립적으로 실행되며 항상 메모리에 상주하는 서비스.
- 예: httpd (Apache 웹 서버), sshd (SSH 서버), mysqld (MySQL 서버)
2️⃣ 슈퍼(Super) 데몬
- 여러 개의 하위(child) 데몬을 관리하는 메인 데몬 역할.
- 필요할 때만 특정 데몬을 실행하는 방식으로 자원을 절약할 수 있음.
- 예: xinetd (슈퍼 데몬), inetd
📌 대부분의 데몬은 서비스명 + d 형태 (httpd, sshd, smtpd 등)
🚀 Linux 데몬(daemon) 관리 개념 정리
Linux에서 서비스는 데몬(daemon) 형태로 실행되며, 이를 관리하는 방식에 따라 **단독 데몬(Standalone Daemon)**과 **슈퍼 데몬(Super Daemon)**으로 구분할 수 있어.
🔹 단독 데몬(Standalone Daemon)
💡 특징:
- 각 서비스(Web, Database, Mail 등)는 자신만의 독립적인 인스턴스(객체)를 메모리에 계속 상주시켜서 요청을 기다림.
- 각 서비스마다 소켓 처리 루틴을 메모리에 유지해야 해서 시스템 리소스를 많이 사용함.
- 자주 사용되고, 성능이 중요한 서비스는 단독 데몬으로 구성하는 것이 일반적.
💡 예제:
- 웹 서버(Apache, Nginx) → httpd, nginx
- 데이터베이스 서버(MySQL, PostgreSQL) → mysqld, postgresql
- 메일 서버(Postfix, Sendmail) → postfix, sendmail
💡 서비스 실행 방법:
📌 단독 데몬은 항상 메모리에 상주하며, 클라이언트 요청을 받을 준비가 되어 있음.
🔹 슈퍼 데몬(Super Daemon)
💡 특징:
- 단독 데몬 방식은 메모리를 많이 사용하는 단점이 있어서, 이를 보완하기 위해 슈퍼 데몬이 등장!
- 개별 데몬을 직접 실행하는 대신, xinetd(슈퍼 데몬)가 대표로 실행되어 모든 차일드 데몬을 관리함.
- 클라이언트 요청이 들어올 때만 해당 차일드 데몬을 실행하는 방식이라서, 메모리를 절약할 수 있음.
💡 슈퍼 데몬이 관리하는 서비스 예시:
- Telnet(23번 포트) → telnetd
- SSH(22번 포트, 과거에 xinetd로 관리 가능) → sshd
- Rsync(873번 포트) → rsyncd
- DNS(Bind, 53번 포트) → named
- DHCP(67, 68번 포트) → dhcpd
💡 작동 방식:
1️⃣ 슈퍼 데몬(xinetd)이 부팅 시 실행됨.
2️⃣ 클라이언트가 특정 서비스(예: Telnet, SSH)를 요청하면, xinetd가 해당 서비스 포트를 확인함.
3️⃣ 요청이 들어오면, 해당 서비스의 차일드 데몬을 실행시켜 연결을 제공함.
4️⃣ 서비스가 끝나면 차일드 데몬이 종료되고, xinetd는 새로운 요청을 기다림.
💡 슈퍼 데몬 실행 방법:
📌 xinetd가 실행되면, 개별 차일드 데몬을 따로 실행할 필요 없이 자동으로 관리됨!
💡 예제:
- Telnet(23번 포트) 요청이 들어오면 xinetd가 요청을 받아서 telnetd를 실행하고, 클라이언트와 연결.
- 요청이 끝나면 telnetd는 종료되고, 메모리를 절약할 수 있음.
🔹 단독 데몬 vs 슈퍼 데몬 비교
구분단독 데몬(Standalone Daemon)슈퍼 데몬(Super Daemon)
특징 | 서비스가 항상 실행됨 | 요청이 들어오면 실행됨 |
리소스 사용량 | 많음 (메모리 상주) | 적음 (필요할 때만 실행) |
사용 서비스 | Web, Database, Mail | Telnet, SSH, Rsync, DHCP 등 |
예제 | httpd, mysqld, postfix | telnetd, rsyncd, dhcpd |
실행 방식 | 개별 서비스 직접 실행 | xinetd가 자동 실행 |
🎯 정리
✅ 단독 데몬(Standalone Daemon)
- 성능이 중요한 웹 서버(Apache), 데이터베이스(MySQL), 메일 서버(Postfix) 등에 사용
- 서비스가 항상 실행됨 (빠른 응답 가능)
- 리소스를 많이 사용함
✅ 슈퍼 데몬(Super Daemon)
- **자주 사용되지 않는 서비스(Telnet, Rsync, DHCP 등)**에 사용
- 필요할 때만 실행되므로, 메모리 절약 효과가 있음
- xinetd가 모든 차일드 데몬을 자동으로 관리
🚀 서버 리소스 관리 및 패키지 설치 정리
서버가 여러 클라이언트와 연결되면 리소스(HDD, RAM, CPU) 사용량이 급증하게 돼. 이를 효율적으로 관리하려면 사용자별 리소스 제한을 설정하고, 패키지 관리 방식도 이해해야 해! 🎯
🔹 1️⃣ 서버 리소스 제한 설정
서버 리소스를 보호하기 위해 연결 세션 수, HDD 사용량, CPU·RAM 제한을 설정할 수 있어.
✅ HDD 사용량 제한 (Disk Quotas)
사용자별 디스크 사용량을 제한하려면 disk quotas 설정을 사용하면 돼.
✅ CPU, RAM, 프로세스 사용 제한
📌 설정 파일: /etc/security/limits.conf
📌 사용자/그룹별 제한 예시
💡 hard limit → 절대 초과 불가능
💡 soft limit → 일시적으로 초과 가능 (grace 기간 내)
🔹 2️⃣ CentOS 7 DVD 마운트 및 패키지 서명 검증
📌 CentOS7 설치 DVD 마운트
📌 /media/Packages/ → 약 4000개의 .rpm 패키지 파일 존재
📌 RPM-GPG-KEY-CentOS-7 → 패키지 정품 인증을 위한 공개 키(Public Key)
💡 공개 키 인증이 중요한 이유?
👉 인터넷에서 받은 .rpm 파일이 신뢰할 수 있는지 확인하기 위해 공개 키(GPG Key) 검증을 사용!
🔹 3️⃣ Linux 패키지 설치 방법 정리
🔹 RedHat 계열 (CentOS, RedHat, Fedora, Rocky)
🔹 Debian 계열 (Debian, Ubuntu, Kali)
💡 yum이나 apt를 쓰면 필요한 패키지까지 자동으로 설치되므로 더 유용해!
🔹 4️⃣ 서비스 설정 기본 원칙
📌 설정 파일은 키 = 값 형태
💡 enable = yes와 같은 의미지만, 원래 키는 변경하지 않는 것이 원칙!
🚀 FTP 서버 관리 및 보안 설정 정리
FTP(File Transfer Protocol)는 서버-클라이언트 간 파일을 주고받는 서비스야.
FTP 사용법과 보안 설정까지 확실하게 정리해볼게! 🎯
🔹 1️⃣ FTP 기본 명령어
✅ 원격 FTP 서버 연결
📌 연결 후 사용자명과 비밀번호 입력
✅ 파일 & 디렉터리 관리
✅ 파일 업로드 & 다운로드
🔹 2️⃣ FTP 사용자 계정 & 접속 디렉터리
✅ 기본 로그인 디렉터리
🔹 centos/centos → /home/centos
🔹 anonymous/x → /var/ftp/pub
💡 Anonymous 로그인
- 익명 사용자(비회원)도 파일 다운로드 가능
- /var/ftp/pub에 파일을 넣으면 불특정 다수가 다운로드 가능
- 보안상 위험할 수 있으므로 주의!
🔹 3️⃣ FTP 보안 강화: chroot 설정
💡 보안 문제: 디렉터리 트래버설 공격
- FTP 사용자가 cd ../../../ 입력 시 최상위 루트(/)까지 접근 가능
- 이를 악용하면 시스템의 중요 파일을 훔쳐볼 수 있음 🛑
✅ 해결책: chroot 설정
chroot를 적용하면 사용자가 현재 디렉터리를 최상위 /로 인식하게 되어
디렉터리 이동이 차단돼!
📌 VSFTPD(FTP 서버)에서 chroot 활성화 방법
아래 옵션을 추가하거나 변경
📌 설정 반영
하드웨어 관리
4GB 정도의 USB 하나가 있거나 VMware에 4GB HDD를 추가한 뒤 실습하면 된다.
이 USB나 GDD를 Linux시스템에 연결해서 사용할 떄 Linux 시스템이 이 하드웨어 장치를 무엇으로 어디에서 인신하는지와 이 하드웨어를 mount 해서 시트템에서 사용하는 방법, 사용자들의 홈디텍터리를 별도의 공가넹서 생성해서 사용자들의 디스크 사용공간을 규제할 수 있는 디스크 쿼타(Disk Quota)를 적용시키는 법, 그리고 하드디스크에 저장된 데이터를 안정하게 하는 RAID와 디스크 공간을 임의로 조절해서 시스템 운영을 여유롭게 할 수 있는 LVM도 함께 알아보자
🚀 Linux에서 저장장치 관리: mount와 umount
Linux에서는 HDD, USB, DVD 등 저장장치를 파일처럼 다룬다.
이런 저장장치를 사용하려면 파일시스템에 연결(마운트, mount) 해야 하고,
사용이 끝나면 연결 해제(언마운트, umount) 해야 해! 🎯
🔹 1️⃣ mount 명령어 (저장장치 연결)
📌 기본 형식
💡 마운트 포인트를 지정하지 않으면 /media 디렉터리에 자동 마운트됨.
📌 마운트된 장치 확인
📌 파일 시스템 타입에 따라 특정 장치만 확인
🔹 2️⃣ 저장장치 마운트 예제
✅ DVD 마운트하기 (iso9660 파일 시스템)
💡 sr0은 CD/DVD-ROM 드라이브 기본 장치명. /mnt/dvd에 연결됨.
✅ USB 마운트하기 (vfat, fat32 파일 시스템)
💡 USB 장치(/dev/sdb1)를 /mnt/usb에 연결.
✅ Windows NTFS 드라이브 마운트하기
💡 Windows HDD를 Linux에서 마운트.
✅ Samba 공유 폴더 마운트하기 (cifs)
💡 Windows 공유폴더(\\192.168.1.100\shared)를 /mnt/samba에 마운트.
🔹 3️⃣ 마운트 옵션
옵션설명
defaults | 일반적인 기본 설정 |
ro | 읽기 전용(읽기만 가능) |
rw | 읽기/쓰기 가능 |
noexec | 실행 파일 실행 금지 |
exec | 실행 파일 실행 허용 |
user | 일반 사용자도 마운트 가능 |
nouser | root만 마운트 가능 |
sync | 동기식 데이터 전송 |
async | 비동기식 데이터 전송 |
📌 USB를 읽기 전용(ro)으로 리마운트
🔹 4️⃣ umount 명령어 (저장장치 연결 해제)
📌 기본 형식
or
📌 예제: USB 언마운트
or
📌 마운트 해제 실패 시 강제 해제
📌 Linux에서 파티션 생성하기 (fdisk & parted)
🛠 새로운 디스크에 파일 시스템을 만들려면 먼저 파티션을 생성해야 해!
- fdisk는 2TB 이하의 디스크에 사용
- parted는 2TB 이상의 디스크에 사용
1️⃣ fdisk로 파티션 생성 (2TB 이하 디스크)
🔹 명령어 입력 순서
- n → 새 파티션 생성
- p → Primary 파티션 선택
- 1 → 첫 번째 파티션 번호 입력
- Enter (기본값 사용) → 시작 섹터 입력
- Enter (기본값 사용) → 끝 섹터 입력
- w → 변경사항 저장 후 종료
✅ 파티션 테이블 확인
✅ 파일 시스템 포맷하기 (ext4 예시)
2️⃣ parted로 GPT 파티션 생성 (2TB 이상 디스크)
🔹 명령어 입력 순서
✅ 파일 시스템 포맷하기
3️⃣ 마운트해서 사용하기
✅ 부팅 시 자동 마운트 설정 (/etc/fstab 수정)
**포멧 해주는 -mkfs
블록장치를 파티션했으면 이제 리눅스 파일 시스템으로 만들어 주어야 데이터를 저장실 수 있다. Windows나 DOS에서의 포메(fomat)과 같은 개념이다. mkfs -f ext4 /dev/sdb1식이다
📌 Linux 파일 시스템 & 디스크 관리 명령어 정리
1️⃣ BTRFS (BeTteR File System)
✅ 특징
- IBM이 제안, Oracle에서 개발
- 최대 16EB(엑사바이트) 지원
- 빠른 파일 시스템 생성
- 데이터 및 메타데이터 체크섬 지원
- 스냅샷 및 온라인 문제 해결 가능
2️⃣ XFS (Extended File System)
✅ 특징
- SGI(Silicon Graphics Inc.)에서 개발
- 최대 16EB 지원
- 고성능, 안정적, 확장성 좋음
- 64비트 저널링 및 디스크 조각 모음(defrag) 지원
- CentOS 7부터 기본 파일 시스템으로 채택됨
3️⃣ 파일 시스템 점검 및 복구
🔹 fsck (or e2fsck)
파일 시스템 손상 시 점검 및 복구
- 마운트 해제 후 검사해야 함
- / 또는 /boot처럼 마운트 해제할 수 없는 경우
(⚠ 하지만 잘 실행되지 않는 경우도 있음 → /etc/fstab에서 주석 처리 후 재부팅하여 검사하는 게 좋음)
4️⃣ 물리적 디스크 손상 점검
🔹 badblocks
(💡 -v 옵션을 사용하면 진행 과정을 확인 가능)
5️⃣ 디스크 용량 및 사용량 확인
🔹 df (Disk Free)
✅ 디스크 용량 확인
🔹 du (Disk Usage)
✅ 디스크 사용량 확인
🔹 lsblk
✅ 블록 장치만 보기
6️⃣ 블록 장치 복사
🔹 dd (Disk Dump)
✅ 디스크 복사
✅ 특수 입력 파일
📌 Linux 디스크 쿼타(Quotas) 설정 및 관리
1️⃣ 디스크 쿼타란?
✅ 멀티 사용자 시스템에서 특정 사용자/그룹의 디스크 사용량을 제한
✅ 특정 사용자가 너무 많은 용량을 사용하면 다른 사용자에게 영향이 갈 수 있음
✅ root는 디스크 쿼타 적용을 받지 않으며 무제한 사용 가능
✅ 사용자의 홈 디렉터리에 쿼타를 설정하면 작업량(HDD 사용량)에 영향을 줌
2️⃣ 디스크 쿼타 설정 방법
✔ 사용자별 디스크 사용량을 제한하는 방법 1️⃣ 직접 설정 파일 수정
2️⃣ 명령어로 설정
(💡 test2 사용자의 하드 리미트 12000, 소프트 리미트 10000으로 설정)
3️⃣ 다른 사용자 설정을 복사하여 적용
(💡 test1의 쿼타 설정을 test2에게 적용)
3️⃣ 디스크 쿼타 제한 방식
✅ Hard Limit (하드 리미트)
- 절대 초과할 수 없는 용량 한계
- 사용자가 지정된 한계를 넘으면 즉시 저장이 불가능
✅ Soft Limit (소프트 리미트)
- 일시적으로 초과할 수 있는 한계
- Grace Period(유예 기간) 동안 초과가 허용됨
📌 예시:
- soft limit = 10000MB, hard limit = 12000MB
- 사용자가 10000MB를 초과하면 유예 기간 동안 계속 사용할 수 있음
- 유예 기간이 끝나면 hard limit(12000MB)에 도달하면 저장 불가능
4️⃣ 디스크 쿼타 주요 명령어
명령어설명quota -u user | 특정 사용자의 디스크 사용량 및 쿼타 확인 |
repquota -a | 모든 사용자의 쿼타 상태 확인 |
edquota user | 특정 사용자의 쿼타 설정 |
setquota -u user soft hard 0 0 /home | 사용자별 쿼타 설정 (soft/hard limit) |
edquota -up user1 user2 | user1의 쿼타 설정을 user2에게 복사 |
quotaoff -a | 디스크 쿼타 비활성화 |
quotaon -a | 디스크 쿼타 활성화 |
'Linux' 카테고리의 다른 글
리눅스 과정 13일차 (1) | 2025.03.06 |
---|---|
리눅스 과정 12일차 (1) | 2025.03.05 |
리눅스 과정 10일차 (0) | 2025.02.28 |
리눅스 과정 8일차 (0) | 2025.02.27 |
리눅스 과정 7일차 (0) | 2025.02.26 |