본문 바로가기

리눅스 마스터 1급 1차 (필기) 대비 2과목 요약 정리

@Engineer-yr2025. 6. 13. 10:41
728x90
💡 1. 파일 시스템 및 디렉토리 관리
  • 주요 디렉토리 및 용도
    • /bin: 기본 명령어 (ls, cp, mv 등) [20.06]
    • /sbin: 시스템 관리 명령어 (ifconfig, shutdown 등)
    • /etc: 시스템 환경 설정 파일 [17.03]
    • /var: 가변 데이터 파일 (로그, 스풀, 메일, 웹 페이지 등) [20.06]
    • /dev: 장치 파일 [16.03]
    • /proc: 가상 파일 시스템 (프로세스 정보, 시스템 정보 등) [16.09]
    • /tmp: 임시 파일 (시스템 재부팅 시 삭제)
    • /usr: 시스템에서 사용하는 프로그램, 라이브러리, 문서 등 (User System Resources)
    • /opt: 추가적인 소프트웨어 설치 디렉토리 (Optional)
    • /boot: 부팅 관련 파일 (커널, GRUB 설정 등)
    • /home: 일반 사용자 홈 디렉토리
    • /root: root 사용자 홈 디렉토리
  • 파일 시스템 종류
    • Ext2/Ext3/Ext4
      • Ext3: 저널링 기능 추가 (시스템 충돌 시 복구 용이). [15.03]
      • Ext4: 대용량 파일/파티션 지원, 다중 블록 할당(mballoc) 등 성능 개선. [17.03]
    • XFS
      • SGI에서 개발한 저널링 파일 시스템, 대용량 파일/디스크 볼륨 지원. [15.03]
      • RHEL 7의 기본 파일 시스템.
    • JFS
      • IBM에서 개발한 저널링 파일 시스템. [15.03]
    • Swap
      • 가상 메모리로 사용되는 영역. 물리적 메모리 부족 시 하드디스크의 일부를 메모리처럼 사용. [18.03, 16.09, 16.03]
      • free 명령어로 용량 확인. [18.03]
  • 파일 시스템 관련 명령어
    • df: 마운트된 파일 시스템의 사용량 확인. [15.09, 19.03]
    • du: 파일 또는 디렉토리의 디스크 사용량 확인. [19.03]
    • mount: 파일 시스템 마운트. [15.09]
    • umount: 파일 시스템 언마운트.
    • fsck: 파일 시스템 검사 및 복구. [20.06]
    • mkfs: 파일 시스템 생성.
    • fdisk: 파티션 생성/삭제/관리 (대화형). [19.03]
    • parted: 파티션 생성/삭제/관리 (고급, GPT 지원).
    • dd: 파일/디스크 복사 및 변환 (디스크 이미지 생성/복원 등). [20.06]
  • 저널링 파일 시스템의 장점: 시스템 충돌 시 데이터 무결성 보장, 빠른 복구 시간. [15.03]
  • RAID (Redundant Array of Independent Disks)
    • RAID-0 (Striping): 데이터 분산 저장, 성능 향상, 안정성 없음. [15.09]
    • RAID-1 (Mirroring): 데이터 중복 저장, 안정성 높음, 용량 효율성 50%. [15.09]
    • RAID-5: 패리티 정보 분산 저장, 최소 3개 디스크 필요, 1개 디스크 오류 허용. [15.09, 23.03]
    • RAID-6: 이중 패리티 정보 저장, 2개 디스크 오류 허용, 최소 4개 디스크 필요. [19.03]
    • RAID-10 (RAID 1+0): 스트라이핑된 미러링, 성능과 안정성 모두 높음. [15.09]
    • RAID 볼륨 생성 시: mdadm 명령 사용. [20.06]
  • LVM (Logical Volume Manager)
    • 물리 디스크를 유연하게 관리하여 논리 볼륨 생성/확장/축소 가능. [19.03]
    • 물리 볼륨(PV) → 볼륨 그룹(VG) → 논리 볼륨(LV) 순서. [19.03]

💡 2. 프로세스 및 작업 관리

🐧 프로세스 제어 및 관리

  • 프로세스 상태
    • R (Running): 실행 중 또는 실행 가능한 상태.
    • S (Sleeping): 대기 상태 (인터럽트 가능).
    • D (Uninterruptible Sleep): 인터럽트 불가능한 대기 상태 (I/O 대기 등).
    • Z (Zombie): 좀비 프로세스 (자식 프로세스가 종료되었으나 부모가 회수하지 않음).
    • T (Stopped): 일시 중지 상태 (Ctrl+Z 또는 시그널).
    • X (Dead): 종료 상태 (거의 나타나지 않음).
  • 프로세스 관련 명령어
    • ps: 현재 실행 중인 프로세스 목록 확인. [15.09]
      • ps -ef: 모든 프로세스의 상세 정보 (PID, PPID, UID 등).
      • ps aux: 모든 프로세스 (BSD 스타일).
    • top: 실시간 프로세스 모니터링 (CPU, 메모리 사용량 등). [15.09]
    • pstree: 프로세스 트리 형태로 출력. [20.10]
    • kill: 프로세스에 시그널 전송. [19.09]
      • kill -9 [PID] (SIGKILL): 프로세스 강제 종료 (최강의 시그널). [19.09, 20.06, 22.03]
      • kill -15 [PID] (SIGTERM): 프로세스에게 정상 종료 요청 (기본). [22.03]
      • kill -1 [PID] (SIGHUP): 터미널 종료 시 프로세스에게 전송.
      • kill -2 [PID] (SIGINT): Ctrl+C 시 전송.
      • kill -19 [PID] (SIGSTOP) 또는 kill -STOP [PID]: Ctrl+Z 시 전송 (강제 일시 정지). [16.03]
      • kill -18 [PID] (SIGCONT) 또는 kill -CONT [PID]: 중지된 프로세스 재개.
      • kill -20 [PID] (SIGTSTP) 또는 kill -TSTP [PID]: Ctrl+Z 시 전송 (터미널 정지 시그널). [22.03]
    • killall: 특정 이름의 모든 프로세스 종료.
    • pkill: 패턴으로 프로세스 종료.
    • bg: 백그라운드로 전환된 프로세스 재개.
    • fg: 백그라운드 프로세스를 포어그라운드로 전환. [20.06]
    • nohup: 터미널 종료와 상관없이 프로세스 실행.
    • nice: 프로세스의 우선순위 설정 (높은 nice 값 = 낮은 우선순위). [15.09]
    • renice: 실행 중인 프로세스의 우선순위 변경.
  • forkexec
    • fork: 부모 프로세스와 동일한 자식 프로세스 생성. [19.09]
    • exec: 현재 프로세스를 새로운 프로그램으로 대체. [19.09]
  • Crontab (정기적인 작업 예약)
    • 사용자별 작업 예약: crontab -e (편집), crontab -l (목록 확인). [20.10]
    • 시스템 전체 작업: /etc/crontab 또는 /etc/cron.d 디렉토리.
    • 필드 순서: 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7) 명령어 [15.09]
    • */10: 10분마다.
    • 1,5: 1분과 5분에.
  • at (일회성 작업 예약)
    • 특정 시간에 한 번만 실행될 작업 예약. [20.10]
    • at -l: 예약된 작업 목록 확인.
    • at -r [작업번호]: 예약된 작업 삭제.

💡 3. 사용자 및 그룹 관리

🐧 사용자 및 그룹 관리

  • 주요 설정 파일
    • /etc/passwd: 사용자 계정 정보 (로그인 쉘, 홈 디렉토리, UID 등) [20.06]
    • /etc/shadow: 사용자 패스워드 암호화 정보, 패스워드 만료 정책 [20.06]
    • /etc/group: 그룹 정보 (GID, 그룹 멤버)
    • /etc/gshadow: 그룹 패스워드 정보
    • /etc/default/useradd: useradd 명령의 기본값 설정 (홈 디렉토리 생성 여부 등) [20.06]
    • /etc/login.defs: 사용자 계정 생성 시 기본값 및 패스워드 정책 (최대/최소 길이 등) [20.06]
  • 사용자 관련 명령어
    • useradd: 사용자 계정 생성. [20.06]
      • -m: 홈 디렉토리 생성.
      • -g [그룹명]: 주 그룹 지정.
      • -G [그룹명]: 보조 그룹 지정.
      • -s [쉘경로]: 로그인 쉘 지정.
      • -u [UID]: UID 지정.
    • usermod: 사용자 계정 정보 변경. [20.06]
    • userdel: 사용자 계정 삭제. [20.06]
    • passwd: 사용자 패스워드 변경. [20.06]
      • passwd -l [사용자명]: 계정 잠금 (Lock).
      • passwd -u [사용자명]: 계정 잠금 해제 (Unlock).
      • passwd -d [사용자명]: 패스워드 삭제 (패스워드 없이 로그인 가능).
    • su: 다른 사용자로 전환 (Superuser).
    • sudo: 다른 사용자의 권한으로 명령어 실행 (주로 root 권한). /etc/sudoers 파일로 설정.
    • id: 사용자 및 그룹 ID 확인. [17.09]
    • whoami: 현재 로그인한 사용자 이름 확인.
  • 그룹 관련 명령어
    • groupadd: 그룹 생성. [20.06]
    • groupmod: 그룹 정보 변경.
    • groupdel: 그룹 삭제.
  • UMASK (파일 및 디렉토리 생성 시 기본 권한)
    • 파일: 666 - UMASK 값 = 생성 권한.
    • 디렉토리: 777 - UMASK 값 = 생성 권한.
    • umask 명령어로 확인/설정. [15.09]
  • 파일 접근 권한 (chmod, chown, chgrp)
    • chmod: 파일 또는 디렉토리 권한 변경. [15.09]
      • u: 사용자, g: 그룹, o: 기타, a: 전체.
      • +: 권한 추가, -: 권한 제거, =: 권한 설정.
      • r: 읽기 (4), w: 쓰기 (2), x: 실행 (1).
      • 특수 권한: SetUID (4000), SetGID (2000), Sticky Bit (1000).
      • SetUID: 실행 시 파일 소유자의 권한으로 실행 (-rwsr-xr-x). [18.09, 20.06]
      • SetGID: 실행 시 그룹 소유자의 권한으로 실행 / 디렉토리 생성 시 부모 디렉토리 그룹 상속 (-rwxr-sr-x).
      • Sticky Bit: 디렉토리 내 파일 삭제/이름 변경은 소유자만 가능 (drwxrwxrwt). (예: /tmp)
    • chown: 파일 또는 디렉토리의 소유자/그룹 변경. [15.09]
      • chown user:group file: 소유자 및 그룹 변경.
    • chgrp: 파일 또는 디렉토리의 그룹 변경.

💡 4. 네트워크 설정 및 관리

🐧 네트워크 설정 및 관리

  • 네트워크 설정 파일
    • /etc/sysconfig/network-scripts/ifcfg-ethX: 네트워크 인터페이스 설정 (IP, 넷마스크, 게이트웨이, DNS 등). [17.09, 20.10]
    • /etc/sysconfig/network: 네트워크 호스트명, 게이트웨이 등 전역 네트워크 설정.
    • /etc/hosts: 호스트 이름과 IP 주소 매핑 (로컬 DNS 역할). [15.09, 17.09]
    • /etc/resolv.conf: DNS 서버 주소 설정. [20.06, 22.03]
    • /etc/services: 서비스명과 포트 번호 매핑. [17.09]
  • 네트워크 관련 명령어
    • ifconfig: 네트워크 인터페이스 설정 및 정보 확인 (IP, MAC 주소, 전송량 등). [15.09] (최근 ip 명령으로 대체)
    • ip: 네트워크 설정 및 정보 확인 (더 확장된 기능).
      • ip addr show: 인터페이스 IP 주소 확인.
      • ip link show: 인터페이스 정보 확인.
    • route: 라우팅 테이블 확인 및 설정. (최근 ip route 명령으로 대체)
    • netstat: 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등 확인. [20.06, 17.09]
      • -natp: 모든 TCP/UDP 포트 및 관련 프로세스 확인.
      • -r: 라우팅 테이블.
      • -l: Listening 포트.
      • SYN_RECV: SYN Flooding 공격 확인 시 사용되는 상태. [20.06, 23.03]
    • ping: 네트워크 연결 및 응답 시간 확인 (ICMP 프로토콜 사용). [15.09]
    • traceroute: 특정 호스트까지의 경로 추적. [15.09]
    • nslookup: DNS 질의. [15.09] (최근 dig 명령으로 대체)
    • dig: DNS 질의 (고급).
    • hostname: 호스트명 확인 및 설정.
    • dhclient: DHCP 서버로부터 IP 주소 할당.
    • ntpdate: NTP 서버와 시간 동기화 (일회성). [20.10, 23.03]
    • ntpd / chronyd: NTP 데몬 (지속적인 시간 동기화).
  • DHCP (Dynamic Host Configuration Protocol)
    • IP 주소 및 네트워크 설정 자동 할당.
    • 설정 파일: /etc/dhcp/dhcpd.conf 또는 /etc/dhcpd.conf. [20.06]
  • DNS (Domain Name System)
    • 도메인 이름을 IP 주소로 변환.
    • 주요 설정 파일: /etc/named.conf (네임 서버), /etc/resolv.conf (클라이언트).
  • FTP (File Transfer Protocol)
    • 파일 전송 프로토콜.
    • 데몬: vsftpd, proftpd, pure-ftpd.
    • 설정 파일: /etc/vsftpd/vsftpd.conf.
    • 익명 FTP 홈 디렉토리: /var/ftp. [15.09]
    • FTP 전송 모드: Active Mode (서버에서 클라이언트로 연결) / Passive Mode (클라이언트에서 서버로 연결).
  • SSH (Secure Shell)
    • 보안 원격 접속.
    • 설정 파일: /etc/ssh/sshd_config. [19.03]
    • 포트 번호 변경, Root 로그인 허용 여부, 비밀번호 인증 방식 등 설정.
  • Apache HTTP Server (웹 서버)
    • 설정 파일: /etc/httpd/conf/httpd.conf. [20.10]
    • 주요 지시어: DocumentRoot (웹 문서 기본 디렉토리), Listen (포트), ServerName (호스트명). [20.10]
    • 기본 웹 문서 디렉토리: /var/www/html 또는 /usr/local/apache/htdocs.
  • Samba (윈도우 파일 공유)
    • 리눅스/유닉스 시스템과 윈도우 시스템 간 파일 및 프린터 공유.
    • 설정 파일: /etc/samba/smb.conf. [17.09, 20.10]
    • 주요 데몬: smbd (파일/프린터 공유), nmbd (이름 해석).
    • VNC 서버: 리눅스 서버와 윈도우 클라이언트 간 데스크톱 공유. [20.10]
  • Proxy Server (Squid)
    • 클라이언트와 인터넷 사이에서 중개 역할. 캐싱, 접근 제어 등.
    • 설정 파일: /etc/squid/squid.conf. [17.09, 20.06]
    • http_port: 프록시 서버 포트 설정. [20.06]
    • cache_dir: 캐시 저장 디렉토리 설정. [17.09]
  • Xinetd (확장 인터넷 서비스 데몬)
    • 주요 서비스의 요청에 따라 데몬을 실행하는 역할 (서비스 관리). [15.09, 17.09]
    • telnet, ftp 등의 서비스를 관리.
    • 설정 파일: /etc/xinetd.conf, /etc/xinetd.d/*.
    • log_type FILE /var/log/xinetd.log: 로그 파일 경로 설정. [17.03]
  • Systemd (최신 서비스 관리 시스템)
    • SysVinit을 대체하는 초기화 시스템.
    • 서비스 관리: systemctl. (예: systemctl enable sshd, systemctl start sshd)
    • 기본 런레벨 확인: systemctl get-default. [22.03]

💡 5. 시스템 보안

🐧 시스템 보안

  • IPTables (리눅스 방화벽)
    • 패킷 필터링 규칙 설정.
    • filter, nat, mangle, raw 테이블. [17.09]
    • 체인(Chain): INPUT (들어오는 패킷), OUTPUT (나가는 패킷), FORWARD (전달되는 패킷), PREROUTING, POSTROUTING. [17.09]
    • 정책(Policy): ACCEPT (허용), DROP (버림), REJECT (버림+응답 메시지), RETURN (현재 체인 벗어남). [15.09, 20.06, 23.03]
    • 주요 옵션:
      • -A: 규칙 추가 (맨 뒤). [15.03, 23.03]
      • -D: 규칙 삭제.
      • -I: 규칙 삽입 (맨 앞).
      • -R: 규칙 교체.
      • -P: 기본 정책 설정. [19.03]
      • -L: 규칙 목록 출력.
      • -F: 모든 규칙 삭제.
      • -Z: 카운터 초기화.
      • -j [타겟]: 규칙의 목표 (ACCEPT, DROP, REJECT 등).
      • -s [IP/네트워크]: 출발지 IP/네트워크.
      • -d [IP/네트워크]: 목적지 IP/네트워크.
      • -p [프로토콜]: 프로토콜 (tcp, udp, icmp).
      • --dport [포트]: 목적지 포트.
    • iptables -P INPUT DROP: INPUT 체인의 기본 정책을 DROP으로 설정. [19.03]
    • 정책 저장: iptables-save > /etc/sysconfig/iptables 또는 service iptables save. [16.03, 17.09]
    • 주의: lokkit, firewall-cmd는 CentOS/RHEL 계열의 방화벽 관리 도구. ipchains는 iptables의 이전 버전. [20.10, 23.03]
  • TCP Wrapper
    • 네트워크 서비스에 대한 접근 제어. [15.09]
    • 설정 파일: /etc/hosts.allow (허용), /etc/hosts.deny (거부). [19.03]
    • 허용 규칙이 거부 규칙보다 우선.
  • SELinux (Security-Enhanced Linux)
    • 강제적 접근 제어 (Mandatory Access Control, MAC) 구현.
    • 파일 시스템의 모든 개체에 보안 컨텍스트 부여.
    • 모드: Enforcing (강제), Permissive (허용), Disabled (비활성화).
    • 주의: setenforce 명령으로 모드 변경 시 재부팅 후에도 유지되지 않음. 영구 적용은 /etc/selinux/config 파일 수정. [19.03]
  • PAM (Pluggable Authentication Modules)
    • 인증(authentication), 계정(account), 세션(session), 패스워드(password) 관리 모듈. [15.09]
    • /etc/pam.d 디렉토리에 각 서비스별 설정 파일 존재.
  • 로그 파일
    • /var/log/messages: 시스템 일반 메시지, 커널, 부팅 정보 등. [20.10]
    • /var/log/secure: 보안 관련 로그 (인증, 로그인, SSH 등). [20.10]
    • /var/log/maillog: 메일 서버 로그.
    • /var/log/httpd/*: Apache 웹 서버 로그 (access_log, error_log).
    • /var/log/audit/audit.log: 감사 시스템 로그.
    • 로그 관리 데몬: syslogd, rsyslogd, systemd-journald.
    • 로그 파일 순환 관리: logrotate.
  • 네트워크 공격 유형
    • DoS (Denial of Service) / DDoS (Distributed Denial of Service)
      • 서비스 거부 공격. [18.09]
      • DDoS는 여러 대의 공격자를 분산 배치하여 공격. [18.09]
    • SYN Flooding
      • TCP 3-way handshake 과정에서 SYN 패킷만 보내 SYN_RECV 상태의 연결을 고갈시키는 공격. [19.09, 20.06, 23.03]
      • netstat으로 SYN_RECV 상태 확인. [20.06, 23.03]
    • Smurf Attack
      • 공격 대상 IP로 위장하여 ICMP Request를 브로드캐스트 주소로 보내, 다수의 시스템으로부터 ICMP Echo Reply를 공격 대상으로 집중시키는 공격. [18.03]
    • Land Attack
      • 출발지 IP와 목적지 IP를 동일하게 하여 공격 대상 서버가 자신에게 계속 응답하도록 부하를 유발. [19.03, 18.03]
    • Ping of Death
      • IP 패킷을 정상 크기보다 크게 만들어 전송하여 시스템 부하 유발. [19.09, 18.03]
    • Teardrop Attack
      • IP Fragment Offset 값을 조작하여 재조합 과정에서 시스템 오류 유발. [19.09]
    • Brute Force Attack
      • 무작위 대입 공격 (패스워드 등). [19.09]
    • 가용 자원 고갈 공격: 메모리, 디스크, 프로세스, 네트워크 대역폭 등 자원을 고갈시키는 공격. [20.06, 23.03]
    • DDoS 공격 도구: Trinoo, TFN (TFN2K), Stacheldraht, Tribe Flood Network. Boink는 DDoS 도구가 아님. [20.10]
  • 침입 탐지 시스템 (IDS) / 침입 방지 시스템 (IPS)
    • IDS: 침입 징후 탐지. (예: Snort, Suricata, Tripwire) [15.09, 20.06]
    • IPS: 침입 실시간 차단.
    • Tripwire: 무결성 검사 도구. [15.03]
    • John the Ripper: 패스워드 크랙 도구. [20.06]
  • 가상화 도구
    • virt-manager: 가상 머신 관리자 GUI. [20.10, 19.09]
    • virt-top: 가상 머신 CPU 사용량 모니터링. [20.10, 19.09]
    • virsh: 가상 머신 명령줄 인터페이스. [20.10]
    • libvirtd: 가상화 관리 데몬. [20.10, 19.09]

🐧 리눅스 마스터 1급 2과목 핵심 빈출 지문 (2015년 ~ 2023년)

  1. UID(User ID)는 사용자를 식별하는 고유한 번호로, `0`은 root 사용자, `1~499` (또는 `1~999` 배포판에 따라 다름)는 시스템 사용자, `500` (또는 `1000`) 이상은 일반 사용자에게 할당된다.
  2. GID(Group ID)는 그룹을 식별하는 고유한 번호이다.
  3. 사용자 정보 파일은 `/etc/passwd`이며, 로그인 이름, 비밀번호(x), UID, GID, 사용자 정보, 홈 디렉터리, 로그인 쉘 정보가 저장된다.
  4. 비밀번호 암호화 정보는 `/etc/shadow` 파일에 저장된다.
  5. 그룹 정보 파일은 `/etc/group` 파일이다.
  6. 그룹 비밀번호는 `/etc/gshadow` 파일에 저장된다.
  7. `/etc/default/useradd` 파일은 `useradd` 명령의 기본값을 설정한다.
  8. `/etc/skel` 디렉터리는 새 사용자의 홈 디렉터리에 복사될 기본 설정 파일(예: `.bashrc`, `.profile`)을 포함한다.
  9. `useradd` 명령은 새로운 사용자를 생성한다.
  10. `userdel` 명령은 사용자를 삭제한다 (`-r` 옵션으로 홈 디렉터리도 함께 삭제).
  11. `usermod` 명령은 사용자 정보를 변경한다 (`-l` 로그인 이름 변경, `-d` 홈 디렉터리 변경, `-g` 주 그룹 변경, `-G` 보조 그룹 추가, `-L` 잠금, `-U` 잠금 해제).
  12. `passwd` 명령은 사용자 비밀번호를 변경한다.
  13. `groupadd` 명령은 새로운 그룹을 생성한다.
  14. `groupdel` 명령은 그룹을 삭제한다.
  15. `groupmod` 명령은 그룹 정보를 변경한다.
  16. `chown` 명령은 파일/디렉터리의 소유자 또는 소유 그룹을 변경한다.
  17. `chgrp` 명령은 파일/디렉터리의 소유 그룹을 변경한다.
  18. `chmod` 명령은 파일/디렉터리의 접근 권한을 변경한다. (r:4, w:2, x:1)
  19. 권한 `777`모든 사용자에게 읽기, 쓰기, 실행 권한을 부여한다.
  20. Sticky Bit (접착 비트, `t`)는 디렉터리에 설정 시, 누구나 파일을 생성할 수 있지만, 해당 파일을 생성한 사용자만 삭제할 수 있도록 한다. (예: `/tmp`)
  21. Sticky Bit의 권한 값은 `1`이다. (예: `chmod 1777 /tmp`)
  22. SetUID (SUID, `s` for user)실행 파일에 설정 시, 파일을 실행하는 사용자의 권한이 아닌 파일 소유자의 권한으로 실행되도록 한다.
  23. SUID의 권한 값은 `4`이다. (예: `chmod 4755 /usr/bin/passwd`)
  24. SetGID (SGID, `s` for group)실행 파일에 설정 시, 파일을 실행하는 사용자의 그룹 권한이 아닌 파일 소유 그룹의 권한으로 실행되도록 한다. 디렉터리에 설정 시, 해당 디렉터리 내에 생성되는 파일들의 그룹 소유권이 부모 디렉터리의 그룹 소유권을 따라가도록 한다.
  25. SGID의 권한 값은 `2`이다. (예: `chmod 2775 /shared_dir`)
  26. `umask`는 새로 생성되는 파일/디렉터리의 기본 접근 권한을 제한하는 데 사용된다. 파일은 `666 - umask`, 디렉터리는 `777 - umask`로 계산된다.
  27. `df` 명령은 파일 시스템의 디스크 사용량을 확인한다 (`-h` 읽기 쉬운 단위로, `-T` 파일 시스템 타입).
  28. `du` 명령은 디렉터리 또는 파일의 디스크 사용량을 확인한다 (`-sh` 요약 및 읽기 쉬운 단위).
  29. `fdisk` 명령은 하드디스크 파티션을 생성, 삭제, 변경하는 데 사용된다 (최대 4개의 주 파티션).
  30. `gdisk` 명령은 GPT(GUID Partition Table) 파티션을 관리한다.
  31. `mkfs` 명령은 파일 시스템을 생성한다 (`mkfs.ext4`, `mkfs.xfs` 등).
  32. `mount` 명령은 파일 시스템을 특정 디렉터리(`마운트 포인트`)에 연결한다.
  33. `umount` 명령은 마운트된 파일 시스템을 해제한다.
  34. `/etc/fstab` 파일은 시스템 부팅 시 자동으로 마운트될 파일 시스템 정보를 저장한다. (장치명, 마운트 지점, 파일 시스템 종류, 마운트 옵션, dump 옵션, fsck 옵션).
  35. LVM (Logical Volume Manager)물리적 볼륨(PV) → 볼륨 그룹(VG) → 논리적 볼륨(LV) 순으로 구성된다.
  36. `pvcreate`, `vgcreate`, `lvcreate` 명령으로 LVM을 생성한다.
  37. `lvextend`, `lvreduce` 명령으로 논리적 볼륨의 크기를 조정한다.
  38. `resize2fs` (ext) 또는 `xfs_growfs` (xfs) 명령으로 파일 시스템 크기를 조정한 후 논리적 볼륨의 크기를 조정한 내용을 반영한다.
  39. inode는 파일의 메타데이터를 저장한다.
  40. `df -i` 명령으로 inode 사용량을 확인할 수 있다.
  41. hard link는 원본 파일과 동일한 inode를 가지며, 원본 파일 삭제 시에도 데이터가 유지된다.
  42. symbolic link (soft link)는 원본 파일의 경로를 가리키는 새로운 파일이며, 원본 파일 삭제 시 링크가 깨진다.
  43. `ls -i` 명령으로 inode 번호를 확인할 수 있다.
  44. cron정기적으로 반복되는 작업을 예약하는 데 사용된다.
  45. 사용자별 크론 작업은 `crontab -e` 명령으로 설정하고, `/var/spool/cron/[사용자계정]` 파일에 저장된다.
  46. 시스템 전체 크론 작업은 `/etc/crontab` 파일에 정의된다.
  47. 크론 필드 순서는 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7) 명령어 이다.
  48. `*`는 모든 시간을 의미한다.
  49. `,`는 나열된 여러 값을 의미한다.
  50. `-`는 범위 값을 의미한다.
  51. `/`는 간격을 의미한다.
  52. `at` 명령은 단 한 번만 실행될 작업을 예약하는 데 사용된다.
  53. `atq` (또는 `at -l`) 명령은 예약된 `at` 작업을 확인한다.
  54. `atrm` (또는 `at -d`) 명령은 예약된 `at` 작업을 삭제한다.
  55. `batch` 명령은 시스템 부하가 낮을 때 `at` 명령처럼 한 번만 실행되는 작업을 예약한다.
  56. 백업 종류에는 전체 백업(Full Backup), 증분 백업(Incremental Backup), 차등 백업(Differential Backup)이 있다.
  57. 전체 백업모든 데이터를 백업하며, 복구가 가장 빠르다.
  58. 증분 백업마지막 백업(전체 또는 증분) 이후 변경된 데이터만 백업하며, 용량이 가장 작지만 복구가 복잡하다.
  59. 차등 백업마지막 전체 백업 이후 변경된 데이터만 백업하며, 복구가 증분 백업보다 간단하다.
  60. `tar` 명령은 파일/디렉터리를 묶거나 풀 때 사용된다 (`-c` 생성, `-x` 추출, `-v` 과정 표시, `-f` 파일 지정, `-z` gzip 압축/해제, `-j` bzip2 압축/해제, `-J` xz 압축/해제).
  61. `gzip`, `gunzip`은 파일을 압축/해제한다. (`.gz` 확장자)
  62. `bzip2`, `bunzip2`는 파일을 압축/해제한다. (`.bz2` 확장자)
  63. `xz`, `unxz`는 파일을 압축/해제한다. (`.xz` 확장자)
  64. `dd` 명령은 블록 단위로 데이터를 복사하며, 디스크 이미지 생성, 복구, 부트 섹터 복사 등에 사용된다.
  65. `rsync` 명령은 파일/디렉터리를 동기화하는 데 사용된다.
  66. `dump`, `restore` 명령은 파일 시스템 백업 및 복구에 사용된다.
  67. RPM (Red Hat Package Manager)레드햇 계열 리눅스에서 사용되는 패키지 관리 도구이다.
  68. RPM 관련 명령어 옵션은 `-i` (설치), `-U` (업데이트), `-F` (새 버전으로 업그레이드), `-e` (삭제), `-q` (조회), `-V` (패키지 검증), `-h` (진행 과정 #으로 표시)이다.
  69. RPM의 `q` 옵션의 상세 옵션은 `a` (모든 패키지), `i` (패키지 정보), `l` (파일 목록), `f` (파일 소유 패키지), `p` (패키지 파일 정보), `R` (의존성), `c` (설정 파일), `d` (문서 파일) 이다.
  70. `yum` (Yellowdog Updater, Modified)은 RPM 기반의 의존성 문제를 해결하고 인터넷을 통해 패키지를 쉽게 설치/삭제/업데이트할 수 있도록 돕는 도구이다.
  71. `yum` 관련 명령어는 `install`, `remove`, `update`, `check-update`, `list`, `search`, `info`, `repolist` 등이다.
  72. `dnf` (Dandified YUM)는 `yum`의 차세대 버전으로, Fedora, RHEL 8+에서 기본 패키지 관리자로 사용된다.
  73. DEB (Debian Package)데비안 계열 리눅스에서 사용되는 패키지 관리 도구이다.
  74. `dpkg` 명령은 DEB 패키지를 직접 설치/삭제/조회한다.
  75. `apt` (Advanced Package Tool)는 DEB 기반의 의존성 문제를 해결하고 인터넷을 통해 패키지를 쉽게 설치/삭제/업데이트할 수 있도록 돕는 도구이다. (`apt-get`, `apt-cache` 명령 포함).
  76. 커널(Kernel)은 운영체제의 핵심 부분으로, 하드웨어 제어 및 시스템 자원 관리(프로세스, 메모리, 파일 시스템 등)를 담당한다.
  77. 모듈(Module)은 커널에 동적으로 추가/삭제할 수 있는 기능 단위로, 재부팅 없이 드라이버 등을 로드할 수 있다.
  78. `lsmod` 명령은 현재 로드된 커널 모듈 목록을 확인한다.
  79. `insmod` 명령은 커널 모듈을 로드한다.
  80. `rmmod` 명령은 커널 모듈을 언로드한다.
  81. `modprobe` 명령은 의존성을 고려하여 커널 모듈을 로드/언로드한다.
  82. `uname -a` 명령은 커널 버전을 포함한 시스템 정보를 확인한다.
  83. `/lib/modules/`uname -r` 디렉터리에 현재 커널 버전의 모듈이 저장된다.
  84. GRUB(GRand Unified Bootloader)은 리눅스 부트로더로, `/boot/grub2/grub.cfg` 파일에 설정 정보가 저장된다 (Fedora 22+, RHEL 7+).
  85. systemd는 리눅스 시스템의 초기화 프로세스 및 서비스 관리 시스템이다.
  86. `systemctl` 명령은 systemd를 이용하여 서비스를 시작/중지/재시작/상태 확인/활성화/비활성화한다.
  87. `systemctl`의 주요 서브 커맨드는 `start`, `stop`, `restart`, `status`, `enable`, `disable`, `is-enabled`, `list-units` 등이다.
  88. SysVinit (SysV-style Init)은 전통적인 초기화 시스템으로, 런레벨(runlevel)을 사용한다.
  89. `service` 명령은 SysVinit 기반의 서비스를 관리한다.
  90. `chkconfig` 명령은 SysVinit 기반의 서비스 자동 시작 여부를 설정한다.
  91. 프로세스(Process)는 실행 중인 프로그램이다.
  92. `ps` 명령은 현재 실행 중인 프로세스 목록을 확인한다 (`-ef` 또는 `aux` 옵션으로 자세히).
  93. `ps` 명령의 출력 항목 중 `PID` (프로세스 ID), `PPID` (부모 프로세스 ID), `STAT` (프로세스 상태), `VSZ` (가상 메모리 크기), `RSS` (실제 메모리 크기), `TTY` (터미널), `CMD` (명령어) 등이 중요하다.
  94. 프로세스 상태 `R`은 실행 중, `S`는 휴면, `D`는 디스크 대기, `Z`는 좀비, `T`는 정지, `s`는 세션 리더, `l`은 멀티스레드, `+`는 포어그라운드 그룹이다.
  95. `top` 명령은 실시간으로 프로세스 및 시스템 자원 사용 현황을 모니터링한다.
  96. `top`에서 `k` 키로 프로세스 종료 (kill), `r` 키로 우선순위 변경 (renice) 가능하다.
  97. `kill` 명령은 프로세스에 시그널을 전송하여 제어한다. (`-9`는 `SIGKILL`, `-15`는 `SIGTERM` 기본값).
  98. `killall` 명령은 특정 이름을 가진 모든 프로세스를 종료한다.
  99. `pkill` 명령은 프로세스 이름 또는 패턴을 사용하여 프로세스를 종료한다.
  100. `bg` 명령은 일시 정지된 프로세스를 백그라운드로 실행한다.
  101. `fg` 명령은 백그라운드 프로세스를 포어그라운드로 가져온다.
  102. `nohup` 명령은 터미널이 끊어져도 프로세스가 계속 실행되도록 한다.
  103. `&` 기호는 명령어를 백그라운드로 실행한다.
  104. `nice` 명령은 프로세스 실행 시 우선순위(Nice 값)를 설정한다. (Nice 값은 -20 ~ 19, 숫자가 낮을수록 우선순위 높음).
  105. `renice` 명령은 실행 중인 프로세스의 우선순위(Nice 값)를 변경한다.
  106. 쉘 스크립트(Shell Script)는 쉘에서 실행되는 명령어들의 집합으로, `#!` (쉬뱅 또는 Shebang)으로 시작하여 스크립트를 해석할 인터프리터를 지정한다. (예: `#!/bin/bash`).
  107. 쉘 스크립트에서 `$0`는 스크립트 이름, `$1, $2, ...`는 인자, `$#`는 인자의 개수, `$*`와 `$@`는 모든 인자, `$?`는 마지막 명령의 종료 상태, `$$`는 현재 쉘의 PID를 의미한다.
  108. 조건문 `if [ -f 파일 ]`은 파일이 일반 파일이면 참이다.
  109. 조건문 `if [ -d 디렉터리 ]`는 디렉터리이면 참이다.
  110. 조건문 `if [ -x 파일 ]`은 실행 가능 파일이면 참이다.
  111. `case ~ esac` 구문은 여러 조건 중 하나를 선택하여 실행할 때 사용한다.
  112. `for ~ do ~ done` 구문은 반복문을 실행할 때 사용한다.
  113. `while ~ do ~ done` 구문은 조건이 참인 동안 반복문을 실행할 때 사용한다.
  114. `until ~ do ~ done` 구문은 조건이 거짓인 동안 반복문을 실행할 때 사용한다.
  115. `break`는 반복문을 종료한다.
  116. `continue`는 현재 반복을 건너뛰고 다음 반복으로 진행한다.
  117. 로그 파일은 시스템에서 발생하는 다양한 이벤트(오류, 경고, 정보 등)를 기록하는 파일이다.
  118. `/var/log` 디렉터리에 로그 파일이 저장된다.
  119. 주요 로그 파일로는 `/var/log/messages` (일반 시스템 메시지), `/var/log/secure` (보안 관련 메시지), `/var/log/maillog` (메일 서버 로그), `/var/log/boot.log` (부팅 로그), `/var/log/lastlog` (사용자 마지막 로그인 시간), `/var/log/wtmp` (사용자 로그인/로그아웃 기록), `/var/log/btmp` (실패한 로그인 기록) 등이 있다.
  120. `syslog` (System Log Daemon)는 시스템 로그 메시지를 수집, 분류, 저장하는 데몬이다.
  121. `syslog`의 설정 파일은 `/etc/syslog.conf` (CentOS/RHEL 6 이하) 또는 `/etc/rsyslog.conf` (CentOS/RHEL 7 이상)이다.
  122. 로그 설정 파일의 형식은 `[시설(Facility)].[심각도(Severity)] [액션(Action)]`이다.
  123. 시설(Facility)에는 `auth`, `cron`, `daemon`, `kern`, `mail`, `syslog`, `user`, `local0 ~ local7` 등이 있다.
  124. 심각도(Severity)에는 `emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`, `debug` 등이 있으며, `none`은 해당 심각도를 제외한다.
  125. `logrotate`로그 파일을 주기적으로 관리(압축, 보관, 삭제)하여 디스크 공간을 효율적으로 사용하게 한다.
  126. `logrotate`의 주요 설정 파일은 `/etc/logrotate.conf`이고, 각 서비스별 설정은 `/etc/logrotate.d` 디렉터리에 있다.
  127. `logrotate`의 옵션은 `daily`, `weekly`, `monthly`, `rotate N`, `compress`, `notifempty`, `copytruncate`, `create` 등이다.
  128. ACL (Access Control List)은 파일/디렉터리에 기존 권한(UGO)보다 세분화된 접근 권한을 설정할 수 있도록 한다.
  129. `getfacl` 명령은 ACL 정보를 확인한다.
  130. `setfacl` 명령은 ACL 정보를 설정한다 (`-m` 변경, `-x` 삭제, `-b` 모든 ACL 삭제).
  131. `df -h` 명령은 파일 시스템의 디스크 사용량을 사람이 읽기 쉬운 형태로 출력한다.
  132. `netstat` 명령은 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등을 확인한다 (`-nap` 모든 TCP/UDP 포트와 연결된 프로그램, PID).
  133. `/etc/hosts` 파일은 IP 주소와 호스트 이름을 매핑하는 로컬 DNS 역할을 한다.
  134. `/etc/resolv.conf` 파일은 DNS 서버 주소를 설정한다.
  135. `/etc/sysconfig/network-scripts/ifcfg-eth0` 등은 네트워크 인터페이스 설정 파일이다.
  136. `system-config-network`는 네트워크 설정 GUI 도구이다.
  137. `route` 명령은 라우팅 테이블을 확인하거나 설정한다.
  138. `ifconfig` (또는 `ip addr`) 명령은 네트워크 인터페이스의 IP 주소 등을 확인한다.
  139. `/proc/cpuinfo` 파일은 CPU 정보를 포함한다.
  140. `/proc/meminfo` 파일은 메모리 정보를 포함한다.
  141. `/proc/partitions` 파일은 파티션 정보를 포함한다.
  142. `dmesg` 명령은 커널 부팅 메시지를 출력한다.
728x90
Engineer-yr
@Engineer-yr :: SE-STUDY

https://github.com/yurimheo

공부 기록

목차