반응형
안녕하세요.
오늘은 리눅스 마스터 1과목 정리 및 요약의 대해 말해볼까 합니다!
1과목: 리눅스 시스템의 이해와 관리
1. 리눅스 시스템의 구조 및 이해
- 커널 (Kernel):
- 리눅스 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 인터페이스 역할을 합니다. CPU, 메모리, 디스크 및 네트워크 장치와 같은 시스템 리소스를 관리하며, 시스템 호출(System Calls)을 통해 사용자 공간과 커널 공간 간의 인터페이스를 제공합니다.
- 주요 기능: 프로세스 관리, 메모리 관리, 디스크 및 파일 시스템 관리, 네트워크 관리, 디바이스 드라이버 관리 등.
- 시스템 콜 (System Calls):
- 사용자 공간 프로그램이 커널의 기능을 사용할 수 있게 하는 인터페이스입니다. 프로세스 생성, 파일 조작, 메모리 할당, 네트워크 통신 등 다양한 작업을 수행하기 위해 시스템 호출이 사용됩니다.
- 예시: read(), write(), fork(), execve(), open() 등.
- 디렉토리 구조 (Directory Structure):
- 리눅스 파일 시스템은 계층적 구조로 구성되어 있으며, 루트(/) 디렉토리를 최상위로 하여 여러 하위 디렉토리로 나누어져 있습니다.
- 주요 디렉토리:
- /bin: 사용자 명령어 바이너리가 위치.
- /boot: 부팅에 필요한 파일과 커널 이미지가 위치.
- /etc: 시스템 설정 파일이 위치.
- /home: 사용자 홈 디렉토리.
- /var: 로그 파일과 같은 가변 데이터를 저장.
- /usr: 사용자 프로그램과 라이브러리.
- 부팅 과정 (Boot Process):
- 리눅스 시스템의 부팅은 여러 단계로 나누어집니다.
- BIOS/UEFI 초기화: 시스템 하드웨어를 초기화하고 부트 로더를 로드할 준비를 합니다.
- Boot Loader (예: GRUB) 실행: 커널을 메모리로 로드하고 제어를 커널에 넘깁니다.
- 커널 로딩: 커널이 메모리에 로드되며, 하드웨어 장치를 초기화하고, init 프로세스 또는 systemd를 시작합니다.
- Init/Systemd 실행: 시스템 초기화 및 서비스 시작을 담당하며, 사용자 환경을 설정하고 로그인 프롬프트를 제공합니다.
- 리눅스 시스템의 부팅은 여러 단계로 나누어집니다.
2. 시스템 부팅과 관련한 설정 및 관리
- GRUB (Grand Unified Bootloader):
- 다양한 운영 체제를 부팅할 수 있는 부트 로더입니다. 시스템 시작 시 커널을 로드하고 부팅 메뉴를 제공합니다.
- 설정 파일: /boot/grub/grub.cfg 또는 /etc/default/grub에서 부팅 메뉴와 커널 옵션을 설정할 수 있습니다.
- 주요 명령어: grub-install, update-grub.
- 부팅 단계:
- 부팅 과정은 여러 단계로 나누어집니다:
- BIOS/UEFI 초기화: 기본 하드웨어 체크 및 초기화.
- MBR/GPT에서 부트 로더 로딩: 부트 로더는 운영 체제를 부팅하는 데 필요한 정보를 갖고 있습니다.
- 커널 로딩: 부트 로더가 커널을 메모리에 로드하고, 하드웨어를 초기화한 후, init 프로세스를 실행합니다.
- Init 프로세스 시작: 시스템 초기화 스크립트를 실행하고, 런레벨이나 시스템 타겟에 따라 다양한 서비스를 시작합니다.
- 부팅 과정은 여러 단계로 나누어집니다:
- 부트 로더 설정 파일:
- /boot/grub/grub.cfg: 부팅 메뉴 항목과 커널 매개변수를 설정하는 파일로, 부팅 시 자동으로 읽혀집니다.
- 예시: grub.cfg 파일의 항목을 수정하여 특정 커널 옵션이나 부팅 메뉴의 기본 항목을 설정할 수 있습니다.
- 런레벨 및 시스템 타겟:
- SysVinit의 런레벨: 시스템의 운영 상태를 정의하며, 각각의 런레벨은 시스템이 부팅 후 어떤 서비스를 시작할지 결정합니다. (예: 0 - 시스템 종료, 1 - 단일 사용자 모드, 3 - 멀티유저 모드, 5 - 멀티유저 + GUI, 6 - 재부팅)
- systemd의 타겟: SysVinit의 런레벨과 유사하게, 시스템 상태를 정의하며, graphical.target, multi-user.target 등으로 정의됩니다.
- 명령어: systemctl get-default, systemctl set-default, systemctl isolate.
3. 프로세스와 작업 관리
- 프로세스 상태:
- 상태 종류:
- R (Running): 실행 중이거나 실행 대기 중인 상태.
- S (Sleeping): 대기 중인 상태(인터럽트 가능).
- D (Uninterruptible Sleep): 대기 중인 상태(인터럽트 불가능).
- Z (Zombie): 종료된 프로세스가 부모 프로세스에 의해 수거되지 않은 상태.
- T (Stopped): 일시 중지된 상태.
- 상태 종류:
- 프로세스 관리 명령어:
- ps: 현재 실행 중인 프로세스 목록과 상태를 출력합니다. ps aux 명령을 사용하여 모든 프로세스의 상세 정보를 볼 수 있습니다.
- top: 실시간으로 시스템의 모든 프로세스를 모니터링하며 CPU와 메모리 사용량을 확인할 수 있습니다.
- htop: top의 향상된 버전으로, 사용자가 직관적으로 프로세스를 모니터링하고 종료할 수 있습니다.
- kill: 특정 프로세스를 종료하는 명령어로, PID(Process ID)를 지정하여 해당 프로세스를 종료합니다.
- **nice**와 renice: 프로세스의 우선순위를 설정하거나 변경하는 명령어로, 프로세스의 CPU 사용 우선순위를 조절합니다.
- jobs, bg, fg: 현재 셸에서 실행 중인 백그라운드 작업을 관리하는 명령어로, 작업의 상태를 확인하고 백그라운드 또는 포그라운드로 전환할 수 있습니다.
- 프로세스 우선순위 설정:
- nice: 새로운 프로세스를 특정 우선순위로 시작할 때 사용합니다. 예: nice -n 10 ./myprogram
- renice: 이미 실행 중인 프로세스의 우선순위를 변경합니다. 예: renice +5 1234 (PID 1234 프로세스의 우선순위를 5로 설정)
- 프로세스 통신 기법 (IPC):
- 파이프 (Pipes): 두 프로세스 간의 통신을 위한 간단한 메커니즘으로, 한 프로세스의 출력을 다른 프로세스의 입력으로 사용합니다.
- 메시지 큐 (Message Queues): 커널이 제공하는 통신 방식으로, 프로세스 간의 데이터 교환을 지원합니다.
- 공유 메모리 (Shared Memory): 두 프로세스가 동일한 메모리 공간을 공유하여 데이터 교환을 가능하게 합니다.
- 세마포어 (Semaphores): 공유 리소스에 대한 접근을 제어하기 위해 사용되는 동기화 메커니즘입니다.
4. 메모리 관리 및 성능 최적화
- 메모리 관리 개념:
- 물리 메모리 (Physical Memory): 실제 하드웨어 메모리(RAM)로, 시스템의 기본 메모리 자원입니다.
- 가상 메모리 (Virtual Memory): 물리 메모리와 스왑 공간을 결합하여 제공되는 메모리로, 프로그램이 사용할 수 있는 주소 공간을 제공합니다.
- 스왑 공간 (Swap Space): 물리 메모리가 부족할 때 디스크 공간을 활용하여 메모리처럼 사용하는 공간으로, 시스템의 메모리 관리 효율성을 높입니다.
- 메모리 관리 명령어:
- free: 시스템의 물리 메모리와 스왑 메모리 사용량을 표시합니다. 예: free -h (인간이 읽기 쉬운 형식으로 출력)
- vmstat: 가상 메모리, 프로세스, CPU, 디스크 IO, 시스템 호출, 페이징 등의 통계를 제공하여 성능을 모니터링합니다.
- top 및 htop: 시스템의 메모리 사용량을 실시간으로 모니터링하고, 메모리 사용량에 따른 프로세스를 확인할 수 있습니다.
- ps: 실행 중인 프로세스의 메모리 사용량을 확인할 수 있습니다.
- 캐시와 버퍼의 역할:
- 캐시(Cache): 자주 사용되는 데이터를 임시로 저장하여 CPU의 접근 시간을 줄입니다.
- 버퍼(Buffer): 입출력(I/O) 작업을 효율적으로 처리하기 위해 데이터를 임시로 저장합니다.
- 스왑 관리:
- 스왑 공간의 필요성과 설정 방법을 이해하고, 스왑 사용량을 모니터링하여 시스템 성능을 최적화합니다.
- 명령어: swapon, swapoff, mkswap.
5. 파일 시스템과 스토리지 관리
- 파일 시스템 종류:
- 리눅스에서 지원하는 다양한 파일 시스템 유형을 이해하고 사용할 수 있어야 합니다.
- ext3, ext4: 널리 사용되는 파일 시스템으로, 저널링 기능을 제공하여 데이터 무결성을 보장합니다.
- XFS: 대용량 파일 시스템으로, 고성능과 확장성을 제공합니다.
- Btrfs: 최신 파일 시스템으로, 스냅샷, 압축, 데이터 무결성 검사 기능을 제공합니다.
- 디스크 관리 명령어:
- fdisk: MBR 파티션 테이블을 사용하여 디스크 파티션을 관리합니다.
- parted: GPT 파티션 테이블을 포함한 디스크 파티션을 생성, 삭제, 수정할 수 있습니다.
- mkfs: 특정 파티션에 파일 시스템을 생성합니다. 예: mkfs.ext4 /dev/sda1
- mount, umount: 파일 시스템을 마운트하거나 언마운트하여 사용자가 디렉토리로 접근할 수 있도록 합니다.
- df: 파일 시스템의 디스크 사용량을 확인합니다. 예: df -h
- du: 디렉토리의 디스크 사용량을 확인하는 명령어로, 디스크 공간을 효율적으로 관리하는 데 사용됩니다.
- LVM (Logical Volume Manager):
- 물리적 디스크를 논리적 볼륨으로 관리하여 디스크 공간의 유연성을 제공합니다.
- 기능: 디스크 공간을 동적으로 할당, 확장, 축소할 수 있습니다.
- 명령어: pvcreate, vgcreate, lvcreate, lvextend, lvreduce.
- 파일 시스템 점검 및 복구:
- fsck: 파일 시스템의 무결성을 검사하고 오류를 복구하는 명령어입니다. 주로 시스템 부팅 시 자동으로 실행되며, 파일 시스템 손상을 방지합니다.
- e2fsck: ext2/ext3/ext4 파일 시스템의 무결성을 검사하고 복구하는 도구입니다.
6. 사용자 및 그룹 관리
- 사용자 계정 관리:
- useradd: 새로운 사용자 계정을 생성합니다. 예: useradd johndoe
- usermod: 기존 사용자 계정의 속성을 수정합니다. 예: usermod -d /newhome johndoe (홈 디렉토리 변경)
- userdel: 사용자 계정을 삭제합니다. 예: userdel -r johndoe (홈 디렉토리와 함께 삭제)
- 그룹 관리:
- groupadd: 새로운 그룹을 생성합니다. 예: groupadd devteam
- groupmod: 기존 그룹의 속성을 수정합니다. 예: groupmod -n newgroup devteam (그룹 이름 변경)
- groupdel: 그룹을 삭제합니다. 예: groupdel devteam
- 권한 관리:
- chmod: 파일 및 디렉토리의 권한을 설정합니다. 예: chmod 755 script.sh
- chown: 파일 및 디렉토리의 소유자를 변경합니다. 예: chown user:group file.txt
- chgrp: 파일 및 디렉토리의 소유 그룹을 변경합니다. 예: chgrp groupname file.txt
- SUID, SGID, 스티키 비트:
- SUID (Set User ID): 실행 파일이 실행될 때 해당 파일의 소유자 권한으로 실행되도록 설정합니다.
- SGID (Set Group ID): 실행 파일이 실행될 때 해당 파일의 그룹 권한으로 실행되도록 설정하거나, 디렉토리의 파일이 생성될 때 상위 디렉토리의 그룹 권한을 상속하도록 설정합니다.
- 스티키 비트 (Sticky Bit): 디렉토리의 파일 삭제 권한을 소유자와 루트 사용자에게만 부여하여 보안을 강화합니다.
7. 네트워크 구성과 관리
- 네트워크 인터페이스 설정:
- ifconfig: 네트워크 인터페이스의 설정과 상태를 확인합니다. (현재는 ip 명령어로 대체)
- ip: 네트워크 인터페이스와 라우팅 테이블을 관리하는 명령어로, IP 주소 설정, 링크 상태 관리 등을 수행합니다.
- nmcli, nmtui: 네트워크 매니저를 CLI 또는 텍스트 기반 UI 환경에서 관리할 수 있게 하는 도구로, 네트워크 연결 및 상태 확인을 지원합니다.
- 네트워크 서비스 관리:
- SSH, FTP, HTTP, DNS: 리눅스 서버에서 다양한 네트워크 서비스를 설정하고 관리하는 방법을 다룹니다.
- 설정 파일: /etc/ssh/sshd_config (SSH), /etc/httpd/httpd.conf (HTTP), /etc/named.conf (DNS)
- 네트워크 진단 도구:
- ping: 네트워크 연결 상태를 확인하기 위해 대상 호스트에 패킷을 전송하고 응답을 확인합니다. 예: ping google.com
- traceroute: 네트워크 경로를 추적하여 패킷이 목적지까지 도달하는 경로를 보여줍니다.
- netstat 및 ss: 네트워크 연결 상태, 포트 사용 현황, 라우팅 테이블을 확인하는 데 사용됩니다.
- tcpdump: 네트워크 트래픽을 캡처하고 분석하는 도구로, 네트워크 문제를 상세히 진단할 수 있습니다.
- 방화벽 설정:
- iptables: 방화벽 규칙을 설정하여 네트워크 트래픽을 제어합니다. 예: iptables -A INPUT -p tcp --dport 22 -j ACCEPT (SSH 포트 허용)
- firewalld: 동적 방화벽 관리 도구로, 쉽고 유연하게 방화벽을 설정하고 관리할 수 있습니다. 예: firewall-cmd --zone=public --add-port=80/tcp --permanent
8. 시스템 보안 설정
- 파일 및 디렉토리 접근 제어:
- 파일 권한(chmod)과 소유권(chown, chgrp) 설정을 통해 시스템 보안을 강화하는 방법을 다룹니다.
- SELinux 및 AppArmor:
- SELinux (Security-Enhanced Linux): 리눅스 커널에서 제공하는 MAC(강제 접근 제어) 보안 모듈로, 시스템의 전체적인 보안을 강화합니다.
- AppArmor: 응용 프로그램별로 권한을 설정하여 시스템 보안을 강화하는 리눅스 커널 보안 모듈입니다.
- 명령어: getenforce, setenforce, aa-status, aa-enforce.
- 암호화 및 인증 설정:
- 데이터 보호를 위해 암호화 기술과 사용자 인증 설정 방법을 다룹니다.
- 명령어: openssl (암호화 및 인증서 관리), gpg (파일 암호화 및 서명)
- 로그 관리 및 감사:
- rsyslog: 시스템 로그를 수집하고 관리합니다. /etc/rsyslog.conf 파일에서 로그의 저장 위치와 포맷을 설정할 수 있습니다.
- journalctl: systemd 로그를 관리하는 도구로, 부팅 로그, 서비스 로그 등을 확인할 수 있습니다.
9. 시스템 백업 및 복구
- 백업 도구와 전략:
- tar: 파일과 디렉토리를 아카이브하여 백업합니다. 예: tar -czvf backup.tar.gz /home/user
- rsync: 파일과 디렉토리를 동기화하여 효율적인 백업을 수행합니다. 예: rsync -av /source /destination
- dd: 디스크나 파티션의 복사본을 만듭니다. 예: dd if=/dev/sda of=/backup/sda.img
- dump 및 restore: 파일 시스템 레벨에서 백업 및 복구를 수행합니다.
- 스냅샷:
- LVM 스냅샷: 논리 볼륨의 특정 시점에 대한 상태를 백업합니다.
- Btrfs 스냅샷: Btrfs 파일 시스템에서 지원하는 스냅샷 기능을 통해 데이터의 특정 시점을 빠르게 백업하고 복원할 수 있습니다.
- 재해 복구 계획:
- 시스템 장애 발생 시 데이터 복구와 시스템 복원을 위한 계획을 수립하는 방법을 포함합니다. 백업 주기 설정, 복구 절차 테스트 등을 포함합니다.
- RAID 구성:
- RAID 레벨의 선택과 설정을 통해 데이터 복구 가능성을 높이는 방법을 다룹니다. RAID 0, 1, 5, 6, 10 등을 설정하여 성능과 데이터 보호 요구사항을 충족시킵니다.
이 설명은 리눅스 시스템의 심화된 이해와 관리를 위한 다양한 영역을 포괄합니다. 각 항목은 실질적인 리눅스 시스템 관리 기술을 이해하고 적용하는 데 필요한 중요한 요소들을 다룹니다.
표로 정리된 리눅스 관리 명령어
1. 프로세스 관리
명령어설명예시
ps | 현재 실행 중인 프로세스 목록과 상태를 출력합니다. 다양한 옵션을 통해 특정 사용자나 특정 조건의 프로세스를 필터링할 수 있습니다. | ps aux : 모든 사용자의 모든 프로세스를 상세하게 표시합니다. |
top | 시스템의 실시간 프로세스 정보를 제공하며, CPU 사용량, 메모리 사용량 등을 포함합니다. 주로 서버의 성능 모니터링에 사용됩니다. | top : 실시간으로 시스템의 모든 프로세스와 리소스 사용을 표시합니다. |
htop | top의 향상된 버전으로, 색상과 인터페이스를 제공하여 사용자 친화적인 방식으로 프로세스를 모니터링하고 관리할 수 있습니다. | htop : 향상된 인터페이스로 실시간 프로세스를 모니터링합니다. |
kill | 프로세스를 종료하는 명령어로, 특정 PID(Process ID)를 지정하여 해당 프로세스를 종료시킬 수 있습니다. | kill 1234 : PID가 1234인 프로세스를 종료합니다. |
nice | 새로운 프로세스를 시작할 때 우선순위를 설정하여 CPU 사용량을 조절합니다. 우선순위는 -20(가장 높은 우선순위)부터 19(가장 낮은 우선순위)까지입니다. | nice -n 10 myprogram : 우선순위 10으로 myprogram 실행. |
renice | 이미 실행 중인 프로세스의 우선순위를 변경합니다. 주로 리소스를 많이 사용하는 프로세스의 우선순위를 낮출 때 사용합니다. | renice +5 1234 : PID가 1234인 프로세스의 우선순위를 5만큼 낮춥니다. |
jobs | 현재 세션에서 실행 중인 백그라운드 작업 목록을 표시합니다. 작업의 상태와 ID를 확인할 수 있습니다. | jobs : 현재 쉘 세션의 백그라운드 작업 목록을 표시합니다. |
bg | 일시 중지된 프로세스를 백그라운드에서 계속 실행하도록 합니다. jobs 명령으로 확인한 작업 ID를 사용합니다. | bg %1 : 작업 ID 1을 백그라운드에서 계속 실행합니다. |
fg | 백그라운드에서 실행 중인 작업을 포그라운드로 가져와서 실행합니다. jobs 명령으로 확인한 작업 ID를 사용합니다. | fg %1 : 작업 ID 1을 포그라운드로 가져옵니다. |
2. 메모리 관리
명령어설명예시
free | 시스템의 물리 메모리와 스왑 메모리 사용량을 요약하여 보여줍니다. 메모리의 전체 용량, 사용 중인 용량, 사용 가능한 용량을 확인할 수 있습니다. | free -h : 인간이 읽기 쉬운 형태로 메모리 사용량을 표시합니다. |
vmstat | 가상 메모리, 프로세스, CPU, 디스크 IO, 시스템 호출, 페이징 등의 시스템 통계를 제공하여 성능을 모니터링합니다. | vmstat 2 : 2초 간격으로 시스템 성능 통계를 출력합니다. |
top | 시스템의 실시간 메모리 사용량을 포함한 프로세스 정보를 제공합니다. CPU와 메모리 자원을 사용하는 프로세스를 확인할 때 유용합니다. | top : 실시간 메모리 사용량과 프로세스 정보를 표시합니다. |
htop | top과 유사하게 실시간 메모리 사용량을 보여주며, 인터페이스가 향상되어 좀 더 직관적으로 메모리와 프로세스 사용량을 관리할 수 있습니다. | htop : 향상된 인터페이스로 메모리 사용량을 모니터링합니다. |
ps | 실행 중인 프로세스의 메모리 사용량을 확인할 수 있습니다. 옵션을 사용하여 메모리 사용량 기준으로 정렬하거나 필터링할 수 있습니다. | ps aux --sort=-%mem : 메모리 사용량에 따라 프로세스를 정렬하여 표시합니다. |
3. 디스크 및 파일 시스템 관리
명령어설명예시
fdisk | 디스크 파티션을 나누거나 수정할 때 사용하는 도구입니다. MBR 파티션 테이블을 지원합니다. | fdisk /dev/sda : /dev/sda 디스크의 파티션 테이블을 수정합니다. |
parted | GPT 파티션 테이블을 포함하여 디스크 파티션을 생성, 삭제, 수정하는 데 사용되는 도구입니다. 더 큰 디스크와 복잡한 파티션 레이아웃을 지원합니다. | parted /dev/sda : /dev/sda 디스크의 파티션을 설정합니다. |
mkfs | 파일 시스템을 생성하는 명령어로, 특정 디스크 파티션에 ext4, xfs 등 다양한 파일 시스템을 만들 수 있습니다. | mkfs.ext4 /dev/sda1 : /dev/sda1에 ext4 파일 시스템을 생성합니다. |
mount | 파일 시스템을 특정 디렉토리에 마운트하여 접근할 수 있도록 합니다. 주로 외부 저장 장치나 네트워크 파일 시스템을 사용할 때 사용합니다. | mount /dev/sda1 /mnt : /dev/sda1을 /mnt에 마운트합니다. |
umount | 마운트된 파일 시스템을 안전하게 제거합니다. 장치 또는 마운트 지점을 지정하여 실행합니다. | umount /mnt : /mnt에 마운트된 파일 시스템을 해제합니다. |
df | 파일 시스템의 디스크 사용량을 표시합니다. 현재 마운트된 모든 파일 시스템의 사용 가능 용량과 사용 중인 용량을 확인할 수 있습니다. | df -h : 모든 파일 시스템의 디스크 사용량을 인간이 읽기 쉬운 형태로 표시합니다. |
du | 디렉토리의 디스크 사용량을 확인하는 데 사용됩니다. 특정 디렉토리나 파일의 크기를 표시하여 디스크 용량 관리에 유용합니다. | du -sh /home : /home 디렉토리의 전체 크기를 요약하여 표시합니다. |
fsck | 파일 시스템의 무결성을 검사하고 오류를 복구합니다. 주로 시스템 재부팅 시 파일 시스템 오류를 복구하는 데 사용됩니다. | fsck /dev/sda1 : /dev/sda1 파일 시스템을 검사하고 복구합니다. |
e2fsck | ext2/ext3/ext4 파일 시스템의 무결성을 검사하고 복구하는 도구입니다. fsck의 특정 파일 시스템 버전으로, 파일 시스템을 체크하고 복구합니다. | e2fsck /dev/sda1 : /dev/sda1에 대한 ext4 파일 시스템을 검사하고 복구합니다. |
4. 사용자 및 그룹 관리
명령어설명예시
useradd | 새로운 사용자 계정을 생성합니다. 사용자의 홈 디렉토리와 초기 설정 파일을 자동으로 생성할 수 있습니다. | useradd johndoe : johndoe라는 새 사용자 계정을 만듭니다. |
usermod | 기존 사용자 계정의 속성을 수정합니다. 사용자 이름, 홈 디렉토리, 로그인 쉘 등을 변경할 수 있습니다. | usermod -d /home/newhome johndoe : johndoe의 홈 디렉토리를 /home/newhome으로 변경합니다. |
userdel | 사용자 계정을 삭제합니다. 필요에 따라 사용자의 홈 디렉토리와 메일 스풀을 함께 삭제할 수 있습니다. | userdel -r johndoe : johndoe 사용자와 그 홈 디렉토리를 삭제합니다. |
groupadd | 새로운 그룹을 생성합니다. 주로 특정 작업이나 권한을 사용자 그룹으로 관리할 때 사용합니다. | groupadd devteam : devteam이라는 새 그룹을 만듭니다. |
groupmod | 기존 그룹의 속성을 수정합니다. 그룹 이름 변경이나 그룹 ID 변경 등에 사용됩니다. | groupmod -n newgroup devteam : 그룹 devteam의 이름을 newgroup으로 변경합니다. |
groupdel | 그룹을 삭제합니다. 그룹을 삭제하기 전에 해당 그룹에 속한 사용자가 있는지 확인해야 합니다. | groupdel devteam : devteam 그룹을 삭제합니다. |
chmod | 파일 및 디렉토리의 접근 권한을 설정합니다. 읽기, 쓰기, 실행 권한을 사용자, 그룹, 기타 사용자로 나누어 설정할 수 있습니다. | chmod 755 script.sh : script.sh 파일의 권한을 소유자는 읽기/쓰기/실행, 그룹과 다른 사용자는 읽기/실행으로 설정합니다. |
chown | 파일 및 디렉토리의 소유자와 소유 그룹을 변경합니다. 주로 소유자나 소유 그룹이 바뀔 때 사용됩니다. | chown johndoe:devteam script.sh : script.sh 파일의 소유자를 johndoe, 그룹을 devteam으로 변경합니다. |
5. 네트워크 관리
명령어설명예시
ifconfig | 네트워크 인터페이스를 설정하고 관리합니다. 네트워크 인터페이스의 IP 주소, 서브넷 마스크 등을 설정하고 확인할 수 있습니다. (현재는 ip 명령으로 대체) | ifconfig eth0 192.168.1.10 netmask 255.255.255.0 : eth0 인터페이스에 IP 주소를 설정합니다. |
ip | 네트워크 인터페이스와 라우팅 테이블을 관리하는 명령어로, ifconfig와 route를 대체합니다. 네트워크 인터페이스와 관련된 모든 설정을 다룰 수 있습니다. | ip addr show : 모든 네트워크 인터페이스의 IP 주소를 표시합니다. |
nmcli | 네트워크 매니저를 CLI 환경에서 관리할 수 있게 해주는 도구입니다. 연결, 비활성화, 상태 확인 등을 수행할 수 있습니다. | nmcli con up "My Wi-Fi" : "My Wi-Fi" 네트워크 연결을 활성화합니다. |
nmtui | 텍스트 기반 UI를 사용하여 네트워크 매니저를 관리합니다. GUI 환경에서 네트워크 설정을 관리하는 것과 유사하게 사용할 수 있습니다. | nmtui : 텍스트 기반의 네트워크 설정 인터페이스를 엽니다. |
ping | 네트워크 연결 상태를 확인하기 위해 대상 호스트에 패킷을 전송하고 응답을 받는지 확인합니다. 네트워크 문제를 진단하는 데 유용합니다. | ping google.com : google.com 서버와의 연결을 테스트합니다. |
traceroute | 네트워크 경로를 추적하여 패킷이 목적지까지 도달하는 경로를 보여줍니다. 네트워크 지연과 경로 문제를 진단하는 데 사용됩니다. | traceroute google.com : google.com까지의 네트워크 경로를 추적합니다. |
netstat | 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등을 확인하는 데 사용됩니다. 시스템의 네트워크 상태를 종합적으로 모니터링할 수 있습니다. | netstat -tuln : 모든 활성화된 네트워크 포트와 연결을 나열합니다. |
ss | netstat의 대체 명령어로, 네트워크 소켓 정보를 더욱 빠르고 상세하게 제공합니다. 열린 소켓의 상태와 통계 정보를 확인할 수 있습니다. | ss -tuln : 활성화된 네트워크 포트와 연결을 나열합니다. |
tcpdump | 네트워크 패킷 캡처 및 분석 도구로, 네트워크 트래픽을 상세히 분석하여 네트워크 문제를 진단하는 데 사용됩니다. | tcpdump -i eth0 port 80 : eth0 인터페이스의 포트 80 트래픽을 캡처합니다. |
6. 보안 및 접근 제어
명령어설명예시
chmod | 파일과 디렉토리의 권한을 설정하거나 변경합니다. 사용자, 그룹, 기타 사용자의 읽기, 쓰기, 실행 권한을 설정합니다. | chmod 644 file.txt : file.txt의 권한을 소유자 읽기/쓰기, 그룹 및 기타 사용자 읽기 권한으로 설정합니다. |
chown | 파일 및 디렉토리의 소유자와 소유 그룹을 변경합니다. | chown root:admin file.txt : file.txt의 소유자를 root, 소유 그룹을 admin으로 변경합니다. |
chgrp | 파일 및 디렉토리의 소유 그룹을 변경합니다. | chgrp admin file.txt : file.txt의 소유 그룹을 admin으로 변경합니다. |
iptables | 방화벽 규칙을 설정하여 네트워크 트래픽을 제어합니다. | iptables -A INPUT -p tcp --dport 22 -j ACCEPT : SSH 포트(22번)를 허용하는 규칙을 추가합니다. |
firewalld | 동적 방화벽 관리 도구로, 방화벽 규칙을 쉽게 설정하고 관리할 수 있습니다. | firewall-cmd --zone=public --add-port=80/tcp --permanent : HTTP 포트(80번)를 영구적으로 허용합니다. |
rsyslog | 시스템 로그를 수집하고 관리합니다. 다양한 로그 포맷과 출력 대상에 따라 설정할 수 있습니다. | rsyslogd : rsyslog 데몬을 시작하여 로그를 수집합니다. |
journalctl | systemd 로그를 조회하고 관리합니다. 시스템 부팅 로그, 서비스 로그 등을 확인할 수 있습니다. | journalctl -xe : 최근의 에러 메시지를 포함한 시스템 로그를 출력합니다. |
7. 백업 및 복구
명령어설명예시
tar | 파일과 디렉토리를 묶어서 아카이브로 만들거나 압축된 형태로 백업합니다. | tar -czvf backup.tar.gz /home/user : /home/user 디렉토리를 backup.tar.gz 파일로 압축하여 백업합니다. |
rsync | 파일과 디렉토리를 동기화하며, 효율적인 백업을 위해 변경된 파일만 전송합니다. | rsync -av /source /destination : /source에서 /destination으로 파일을 동기화합니다. |
dd | 디스크나 파티션의 정확한 복사본을 만들 때 사용되는 도구입니다. | dd if=/dev/sda of=/backup/sda.img : /dev/sda 디스크를 이미지 파일로 백업합니다. |
dump | 파일 시스템을 백업하기 위한 유틸리티로, ext2/3/4 파일 시스템을 지원합니다. | dump -0u -f /backup/root.dump /dev/sda1 : /dev/sda1 파일 시스템을 백업합니다. |
restore | dump 명령으로 생성된 백업 파일을 복원하는 데 사용됩니다. | restore -rf /backup/root.dump : root.dump 파일을 사용하여 파일 시스템을 복원합니다. |
요약
리눅스 마스터 1급의 1과목인 "리눅스 시스템의 이해와 관리"는 리눅스 시스템의 전반적인 구조와 운영을 이해하고, 시스템 설정, 프로세스와 메모리 관리, 파일 시스템과 사용자 관리, 네트워크 설정, 보안 관리, 백업 및 복구 등 다양한 관리 작업을 수행하는 능력을 평가합니다. 이 과목에서는 리눅스 시스템의 심층적인 지식과 실습을 통해 시스템을 안정적으로 운영하고 문제를 해결하는 데 필요한 기술을 다룹니다.
반응형
'자격증 > 리눅스마스터 1급' 카테고리의 다른 글
리눅스 마스터 1급 Samba(삼바)의 모든 것 (7) | 2024.08.29 |
---|---|
리눅스 마스터 1급 http 응답 코드 (5) | 2024.08.28 |
리눅스 마스터 1급 RAID 레벨별 사용 가능한 용량 계산(수정) (30) | 2024.08.26 |
리눅스 마스터 1급 LDAP, NIS 설명, 요약 (50) | 2024.08.24 |
리눅스 마스터1급 요약 crontab (109) | 2024.08.21 |