네트워크관리사 2급 필기 08 — Linux 서버 관리
출제기준: 3과목(NOS, 18문항·36%)의 나머지 절반 — 07편이 Windows Server였다면 이번 편은 Linux입니다.
그리고 3과목의 "진짜 주인공"이기도 합니다.
2020~2026년 3과목 기출 27회차를 키워드로 집계하면 Linux 관련 문항이 회차당 평균 약 9문제(최소 5, 최대 14)입니다.
3과목이 18문항이니 절반 가까이가 Linux라는 뜻입니다. (키워드 기반 집계라 약간의 오차는 있습니다.)
crontab, shutdown/init, Apache(httpd.conf), BIND(named.conf), 로그 파일(dmesg·lastb), lsattr, systemctl 같은 항목이 최근 기출에 계속 나옵니다.
이번 편은 이 기출 항목을 보강해서 정리했습니다.
Linux 개요와 구조 ⭐⭐⭐
Linux는 유닉스 기반의 오픈소스 운영체제입니다.
다중 사용자·다중 작업·다중 처리를 지원하고, 배포판(Distribution)으로는 슬랙웨어·페도라·레드햇·우분투·데비안 등이 있습니다.
구조(안쪽 → 바깥쪽): 하드웨어 → 커널(Kernel) → 셸(Shell) → 응용프로그램
| 구성 | 역할 |
| 커널 | 프로세서·메모리·프로세스·입출력을 관리하는 OS의 핵심 (uname -a로 버전 확인) |
| 셸 | 사용자의 명령을 해석해 커널에 전달하는 명령어 해석기(인터프리터). 기본은 bash, 그 외 csh·ksh |
| 기술적 특징 | 내용 |
| 계층형 파일 시스템 | 루트(/)에서 뻗어 나가는 트리 구조 |
| 장치의 파일화 | 하드웨어도 파일처럼 취급 (/dev/sda = 첫 번째 디스크) |
| 가상 메모리 | 디스크 일부를 메모리처럼 쓰는 영역 = SWAP |
| 가상 콘솔 | 기본 6개, Ctrl + Alt + F1 ~ F6 |
| 동적 라이브러리 | 실행할 때마다 라이브러리를 불러 써서 메모리 절약 (윈도우의 DLL과 유사) |
프롬프트는 일반 사용자 $, root(관리자) #입니다. 예: sunsr@ubuntu:/$ / root@ubuntu:/#
⚠️ 함정 ① "사용자가 내린 명령어를 Kernel에 전달해주는 역할을 하는 것은?" → Shell
이 문제는 2010-07부터 2026-02까지 12번 같은 문장으로 나왔고, 보기 순서가 바뀐 "다음 중 Linux의 명령어 해석기는?"(정답 Shell)도 2015-04~2026-05에 6번 나왔습니다. 확정 득점 문제입니다.
⚠️ 보기에 함께 나오는 오답은 System Program, Loader, Directory, Utility Program, Hierarchical File System입니다.
디렉터리 구조 ⭐⭐⭐
Linux는 /(루트)에서 시작하는 역트리 구조이고, 각 디렉터리의 용도가 정해져 있습니다.
| 디렉터리 | 용도 |
| /bin | 일반 사용자도 쓰는 기본 명령어(필수 실행 파일) |
| /sbin | 관리자(root) 전용 시스템 관리 명령어 |
| /boot | 부팅에 필요한 커널 이미지 |
| /dev | 장치 파일 |
| /etc | 시스템 설정 파일 대부분 (passwd, shadow, fstab, group …) |
| /home | 일반 사용자의 홈 디렉터리 |
| /root | root의 홈 디렉터리 |
| /lib | 라이브러리, 커널 모듈 |
| /mnt | 수동 마운트용 지점 |
| /proc | 실행 중인 프로세스·하드웨어·시스템 정보를 보여주는 가상 디렉터리 |
| /tmp | 임시 파일 |
| /var | 계속 변하는 데이터 (로그, 메일, 스풀) |
| /usr | 시스템·응용프로그램을 사용하기 위한 파일 (프로그램, 라이브러리, 매뉴얼) |
| /lost+found | fsck가 복구한 조각 파일 보관 |
| 자주 나오는 하위 경로 | 내용 |
/etc/passwd |
계정 정보 |
/etc/shadow |
암호화된 패스워드 |
/etc/fstab |
부팅 시 자동 마운트 목록 |
/etc/resolv.conf |
DNS 서버 주소 (클라이언트 설정) |
/var/log |
시스템 로그 |
/var/named |
BIND의 zone 파일 |
/var/spool/mail |
사용자 메일 |
/proc/cpuinfo |
CPU 정보 |
⚠️ 함정 ② "Linux 디렉터리 구성에 대한 설명으로 옳지 않은 것은?" → "/usr - 사용자 계정이 위치하는 파티션 위치"
(사용자 계정이 있는 곳은 /home)
2013-04~2026-08에 9번 나왔고, /tmp(임시 파일), /boot(커널 이미지), /var(로그·메일)가 올바른 보기로 단골 등장합니다.
⚠️ 그 외 자주 나오는 변형: 설정 파일 디렉터리 = /etc(2012-04~2025-08 반복), 기본 명령어 디렉터리 = `/bin`, 프로세스·하드웨어 정보 가상 파일시스템 = `/proc`(2023-05~2025-11 3회), "`/proc`은 파일 크기가 변하는 파일들을 위한 공간"이라는 보기는 오답(2021-05).
파일 시스템·디스크 관리 ⭐⭐
파일 시스템 종류
| ext2 | ext3 | ext4 | |
| 단일 파일 최대 | 2GB | 4GB | 16TB |
| 최대 파일 시스템 | 4TB | 16TB | (대용량) |
| 저널링 | 없음 | 지원 | 지원 + 단편화 개선 |
(위 수치는 교재 기준입니다. 실제 한계는 블록 크기에 따라 다르지만, 시험이 나오면 교재 값이 정답이라서 그대로 외웁니다.)
다만 이 표 자체는 2020년 이후 기출에서 2문항밖에 안 나왔습니다. 가볍게만 보셔도 됩니다.
저널링 = 변경 내용을 먼저 기록(저널)해 두고, 장애 시 그 기록으로 복구 (ext3/ext4, JFS, XFS, ReiserFS)
NFS = 네트워크 파일 시스템(원격 파일 공유) / XFS = SGI / JFS = IBM
디스크 추가 4단계 ★
fdisk(파티션 분할) → mkfs(파일 시스템 생성=포맷) → mount(디렉터리에 연결) → fsck(오류 점검·복구)
영구 마운트는 /etc/fstab 에 등록
| 명령 | 설명 |
| fdisk | 파티션을 나눔. fdisk -l = 목록 확인, 대화형에서 n = 새 파티션, d = 삭제, w = 저장해야 반영 |
| mkfs | 파일 시스템 생성. mkfs -t ext4 /dev/sdb1 |
| fsck | 파일 시스템 오류 점검·복구 (원칙적으로 umount 후 실행) |
| mount / umount | 연결 / 해제. mount -t ext4 /dev/sdb1 /mnt/data |
| gdisk | GPT 파티션 전용. 2TB 이상 디스크에 사용 (MBR은 약 2TB 한계) |
| df | 파일 시스템별 디스크 사용량 / du = 디렉터리 사용량 |
⚠️ 함정 ③ "Linux 명령어 설명으로 옳지 않은 것은?" → "fdisk : 파일시스템 점검"
(파일 시스템 점검은 fsck, fdisk는 파티션 관리). 2025-02에 나왔습니다.
같은 맥락으로 "마운트 되었는지 확인하는 명령어가 아닌 것" = fdisk(2023-05)입니다. (확인은 mount, df, /etc/mtab)
⚠️ 부팅 시 자동 마운트 항목·옵션이 정의된 파일 = /etc/fstab (2008-07~2024-11, 5번)
⚠️ "새 하드디스크 추가 과정과 관계가 가장 적은 것" = fdisk·mkfs·mount가 아닌 보기(cal, 2025-05)
⚠️ 2TB 이상 신규 디스크를 GPT로 파티셔닝하는 명령 = gdisk (2026-02)
SWAP과 부트로더
| 항목 | 내용 |
| SWAP | RAM이 부족할 때 하드디스크 일부를 메모리처럼 쓰는 파티션 |
| GRUB | 다른 OS와 공존할 때 멀티 부팅을 지원하는 Linux 부트 로더 |
⚠️ 함정 ④ "Swap 영역에 대한 설명 중 옳지 않은 것" → "한번 설정한 Swap은 추가가 불가능하므로 신중히 크기를 결정해야 한다" (Swap은 추가할 수 있습니다). 2006-07~2024-02에 5번.
⚠️ "파티션 Type이 SWAP일 때의 의미" = 메모리가 부족할 때 디스크 일부를 메모리처럼 쓰는 파티션 (2013-10~2024-11, 5번), "Linux 로더" = GRUB (2018-07~2024-02, 5번)
계정과 패스워드 ⭐⭐⭐
/etc/passwd — 7개 필드, 콜론(:) 구분
user01 : x : 500 : 500 : developer : /home/user01 : /bin/bash
①로그인명 ②암호 ③UID ④GID ⑤주석 ⑥홈 디렉터리 ⑦로그인 셸
- ②
x는 암호가/etc/shadow에 따로 저장되어 있다는 표시입니다. (암호가 'x'라는 뜻이 아닙니다.) - UID 0 = 관리자(root), 일반 사용자는 교재 기준 500번부터입니다.
- 관리자의 홈은
/root, 일반 사용자의 홈은/home/계정명입니다.
⚠️ 함정 ⑤ "/etc/passwd 내용에 대한 설명으로 옳지 않은 것은?" → "패스워드는 'x'이다"
(실제 패스워드는 shadow에 있음). 2019-05~2025-02에 6번.
/etc/shadow — 9개 필드
이름 : 암호화된 패스워드 : 최종변경일 : 최소 : 최대 : 경고 : 비활성 : 만료 : 예약
- 최종 변경일은 1970-01-01부터 경과한 일수입니다. 패스워드 칸이
!나*이면 로그인이 잠긴 상태입니다. - 최대 100일, 경고 10일이면 변경 후 90일째부터 경고가 시작됩니다.
계정 관련 명령어
| 명령 | 설명 |
| useradd | 계정 생성. -u UID, -g 기본 그룹, -G 보조 그룹, -d 홈, -s 셸, -e 만료일, -c 주석, -M 홈 생성 안 함 |
| passwd | 패스워드 설정·변경 (passwd user01) |
| chage | 패스워드 만료·경고 정보 관리 |
chage 옵션 (대소문자 주의!)
-m 최소 사용 기간 -M 최대 사용 기간 -W 만료 경고 일수
-I 비활성 유예 일수 -E 계정 만료일 -l 현재 설정 조회
예) sudo chage -m 2 -M 100 -W 10 -I 10 -E 2026-12-25 John
⚠️ 함정 ⑥ chage 옵션: "10일 전 암호 변경 경고를 위한 옵션" → -W 10. 2021-11~2026-02에 5번, 그 전에 "패스워드 만료기간 및 시간 정보를 변경하는 명령어 = chage"(2014-04~2022-05, 6번)도 반복됐습니다.
(참고: 교재 표는 소문자 -m/-e/-w로 표기하지만 실제 옵션은 위와 같습니다. 시험은 실제 옵션 -W를 묻고 있으니 위 표를 기준으로 외우세요.)
⚠️ 함정 ⑦ 계정 등록: "유저 이름 network를 icqa 그룹에 편입시키는 명령" → useradd -g icqa network (2012-04~2022-08, 4번). userdel은 삭제입니다.
권한 관리 ⭐⭐⭐
권한 읽는 법
- rwx r-x --x
│ │ │ └ 기타(Other)
│ │ └ 그룹(Group)
│ └ 소유자(User)
└ 파일 종류: - 일반파일 / d 디렉터리 / l 링크 / b 블록장치 / c 문자장치
r = 4(읽기) w = 2(쓰기) x = 1(실행) → rwxr-x--x = 751
chmod — 두 가지 방식
| 방식 | 예 | 의미 |
| 숫자(8진수) | chmod 751 file |
소유자 rwx / 그룹 r-x / 기타 --x |
| 기호 | chmod u+w,g+w,o-x file |
소유자·그룹에 쓰기 추가, 기타의 실행 제거 |
| 기호 | chmod a-w file |
모든 사용자에서 쓰기 제거 |
| 기호 | chmod u=rwx,g=rx,o=x file |
권한을 정확히 지정(덮어쓰기) |
대상은 u(소유자) g(그룹) o(기타) a(전체), 동작은 +(추가) -(제거) =(지정)입니다.
umask·chown·chgrp
umask = 새로 만드는 파일의 기본 권한을 정하는 값
파일 기본 666 − umask, 디렉터리 기본 777 − umask (흔한 umask 022 → 파일 644, 디렉터리 755)
chown = 소유자(:그룹) 변경 예) chown user01:dev file.txt
chgrp = 소유 그룹 변경 옵션 -R = 하위 디렉터리까지
기출 패턴
| 문제 | 정답 | 비고 |
-rwxr-x--x 파일 설명 중 옳지 않은 것 |
"동일 그룹은 실행 권한만" | 그룹은 r-x. 2013-04~2026-05, 10번 |
-rwxr-xr-x를 숫자로 |
755 | 2009-04~2018-10 (6번) |
| 소유자 외에는 보기만, 수정 못 하게 | chmod 644 manager |
2014-04~2025-02, 4번 |
| 소유자·그룹이 아닌 사람은 보기만(수정·실행 불가) | chmod 774 sample |
2024-11~2026-08, 3번 |
| 모든 사용자의 쓰기 권한 금지 | chmod a-w sample |
2011-10~2025-05, 5번 |
| 원래 권한 유지 + 모두에게 쓰기 추가, 결과가 다른 것 | chmod go=w file |
2021-02~2025-08, 5번 |
| root만 사용 가능한 명령 | chown |
2020-02~2026-05, 5번 |
| 디렉터리 소유자·소유그룹 변경 | chown |
2023-05~2025-08, 3번 |
| 작업지시서: 소유자 rwx, 그룹·기타 r-x, 하위 전체 적용 | chmod -R 755 /var/www/upload |
2024-08, 2026-02 |
⚠️ 함정 설명:
go=w는=이므로 기존 권한을 지우고 g·o를 w로만 덮어씁니다. 나머지666,a+w,ugo+w는 "추가"라서 결과가 같습니다.- "모든 사용자에게 모든 권한 = 666"은 틀린 설명입니다. 모두
rwx는 777입니다 (2012-10~2019-02 반복). - 파일 종류
-는 일반 파일입니다 (2012-01~2024-02, 4번). 디렉터리는d.
프로세스·데몬·서비스 관리 ⭐⭐⭐
프로세스
| 명령 | 설명 |
| ps -ef | 모든 프로세스를 full 형식으로 (UID, PID, PPID, 시작 시간, 명령). ps -ef | grep 이름이 관용구 |
| ps afx | 프로세스를 트리 형태로 (데몬 활동 확인) |
| top | 실시간으로 프로세스·시스템 사용량 모니터링 |
| pstree | 프로세스를 트리로 표시 |
| kill PID | 프로세스 종료 (kill -9 = 강제) |
| nice | 프로세스 우선순위 변경 |
| nohup | 터미널을 닫아도 프로세스가 계속 실행되게 함 (백그라운드 유지) |
⚠️ 함정 ⑧ "프로세스 관련 명령어 설명 중 옳지 않은 것" → "top - 가장 우선순위가 높은 프로세스를 보여주는 명령어" (top은 실시간 모니터링). 2018-07~2024-11, 5번.
⚠️ ps 출력은 UID PID PPID … 순서입니다. 2026-08에는 "네 번째 프로세스의 PPID가 PID와 같다"는 보기가 오답으로 나왔습니다. PID는 자기 번호, PPID는 부모 번호입니다.
데몬(Daemon)
데몬은 백그라운드에서 대기하다가 요청이 오면 서비스를 제공하는 프로세스입니다.
(Windows의 "서비스"에 해당) 예: httpd(웹), sshd(SSH), named(DNS), crond(스케줄러), smbd/nmbd(Samba).
⚠️ 함정 ⑨ "데몬 설명 중 옳지 않은 것" → "시스템 부팅 때만 시작될 수 있다" (필요할 때 시작·중지 가능).
2006-01~2025-02, 8번.
⚠️ "데몬이 살아있는지 확인하는 명령" → ps. 2006-07~2026-05, 9번.
서비스 제어, 종료·재부팅, 스케줄
서비스: systemctl start|stop|restart|status|enable 서비스명 (예: systemctl start httpd)
※ systemctl passwd root 같은 하위 명령은 없음 → 2026-08에 오답 보기로 출제
런레벨: 0 = 종료(halt) / 1 = 단일 사용자 / 3 = 다중 사용자(CLI) / 5 = 다중 사용자 + GUI / 6 = 재부팅
종료·재부팅: shutdown -h now / poweroff / halt / init 0 → 종료
shutdown -r now / reboot / init 6 → 재부팅
shutdown -r +5 '메시지' → 접속자에게 메시지 전달 후 5분 뒤 재부팅
shutdown -c → 예약된 shutdown 취소
⚠️ "5분 후 재부팅 + 접속자에게 메시지" → shutdown -r +5 '…' (2014-01~2023-11, 6번)
⚠️ "서버를 종료하는 명령이 아닌 것" → init 6 (재부팅이므로). 2022-02·2023-08·2025-02, 3번
⚠️ "init을 이용한 재부팅 옵션" → init 6 (2020-05, 2021-11, 2024-02), "다중 사용자 + GUI 런레벨" = runlevel 5(2024-05), shutdown -h +30 취소 = shutdown -c(2020-08)
crontab 형식: 분 시 일 월 요일 실행할 명령
crontab -e = 편집 / -l = 조회 / -r = 삭제
매주 월요일 오전 10시 → 0 10 * * 1 /etc/check.sh
⚠️ crontab 삭제 = crontab -r: 2006-04~2026-05, 7번
⚠️ 매주 월요일 오전 10시 설정 = 0 10 * * 1 (2023-11~2025-08, 3번). 앞 칸이 분, 그다음이 시라는 점을 바꿔 놓은 보기(10 0 * * 1)가 오답입니다.
기본 명령어 ⭐⭐⭐
| 명령 | 설명 / 주요 옵션 |
| mkdir | 디렉터리 생성 (-p 상위 경로까지, -m 권한) |
| rmdir | 빈 디렉터리 삭제 (-p) |
| cp | 복사 (-r 하위 디렉터리 포함, -f 덮어쓰기) |
| rm | 삭제 (-r 디렉터리, -rf 강제). 휴지통이 없어 복구되지 않음 |
| mv | 이동 / 이름 변경 (-i 덮어쓸 때 묻기, -f 강제, -n 덮어쓰지 않기, -b 백업) |
| cd | cd .. 상위, cd / 루트, cd - 이전 위치, cd ~ 내 홈 |
| pwd | 현재 작업 디렉터리를 절대 경로로 출력 |
| ls | 목록 (-a 숨김 파일 포함, -l 상세, -R 하위 포함) |
| man | 명령어 사용법 (man ls) |
| cat | 파일 내용 보기 / 결합 (-n 줄 번호). 한 페이지씩: cat file | more |
| grep | 문자열 검색 (-i 대소문자 무시, -n 행 번호, -r 하위 포함, -c 줄 수, -w 단어) |
| wc | 줄·단어·문자 수 (-l 줄, -w 단어, -c 문자) |
| find | 파일 검색 (-name 이름, -type 종류, -perm 권한, -nouser 소유자 없음, -exec 찾은 뒤 명령 실행) |
| free | 메모리 사용량(전체·사용·잔여·swap·버퍼·캐시) 확인 |
| du / df | 디렉터리 사용량 / 파일 시스템 사용량 |
| touch | 빈 파일 생성 |
| chsh | 로그인 셸 변경 |
| lsattr | 파일의 특수 속성 확인 (i 속성이 있으면 쓰기·삭제 불가) |
리다이렉션과 파이프
> 출력을 파일로 저장(덮어쓰기) ls -al > output.txt
>> 출력을 파일 끝에 추가(append) ls -al >> output.txt
< 파일을 입력으로 사용
| 앞 명령의 출력을 뒤 명령의 입력으로 cat exam.txt | more
(교재에는 ">은 입력, <은 출력"이라고 적혀 있지만 정반대입니다. > 출력, < 입력으로 외우세요.)
기출 패턴
- 메모리 양·사용 가능량·공유·가상 메모리를 보는 명령 = free (2010-04~2025-05, 8번), "free 설명으로 옳은 것" = 사용 중·사용 가능한 메모리 (2013-04~2024-02, 6번)
- 현재 작업 디렉터리를 절대경로로 = pwd (2014-04~2026-02, 8번)
- 디렉터리 삭제 = rmdir (2011-10~2022-11, 6번), 사용법을 알아보는 명령 = man ls (2013-07~2023-02, 6번)
- 특정 파일 찾기 = find (2013-10~2020-11, 5번), 2025-11에는 "
-exec은 찾은 파일에 삭제 등 추가 명령 실행"이 정답으로 나왔습니다.-name은 이름 패턴 검색이며 사용자 이름이 아닙니다.-perm은 전체 권한 비트를 고려합니다. - 어디서든 홈으로 = cd ~ (2014-04~2025-11, 4번), 바로 위로 =
cd ..(띄어쓰기 필수, 2020-11) - 디스크 사용량 = du,
mv -i file1 file2= file2가 있으면 덮어쓸지 묻는다 (2024-08) - 계정 삭제 유틸리티를
delete라고 한 보기는 오답입니다 (2022-11) - "
ls -al결과를 output.txt에 저장(덮어쓰기)" =ls -al > output.txt: 2024-05, 2025-08, 2026-05에 같은 문제가 나왔습니다.
로그·보안 점검 명령 ⭐⭐
| 확인하려는 것 | 명령 / 파일 |
| 비인가자의 로그인 실패(시도) 이력 | lastb (/var/log/btmp 기록) |
| 부팅 시 커널 메시지 — 하드웨어·디스크·메모리·CPU·커널 이상 여부 | /var/log/dmesg |
| 계정별 마지막 로그인 | /var/log/lastlog |
| FTP 전송 로그 | /var/log/xferlog |
파일의 i 속성 확인 |
lsattr |
⚠️ `lastb` 문제는 2023-05~2026-02에 3번, `/var/log/dmesg` 문제는 2021-11~2026-08에 4번 나왔습니다. 보기에는 `xferlog`, `history`, `pkill`, `/var/log/cron`, `/var/log/lastlog`, `/var/log/btmp`가 오답으로 섞입니다.
⚠️ `i` 속성 때문에 `/root/passwd`가 삭제되지 않는 상황에서 속성을 확인하는 명령 = **lsattr** (2022-02~2025-11, 3번). `file`, `stat`, `lsblk`는 오답.
네트워크 명령어 ⭐⭐
| 명령 | 설명 |
| ifconfig | 인터페이스 설정·확인 (Windows의 ipconfig). ifconfig eth0 192.168.2.4 up |
| ping | 통신 상태 점검 (ICMP). Linux는 Ctrl+C까지 계속 전송, -c 횟수 |
| netstat | 열린 포트·연결 상태·라우팅 테이블 |
| arp | IP→MAC 캐시 조회 (-a 전체, -s 정적 등록, -d 삭제) |
| traceroute | 목적지까지의 경로 (Windows의 tracert) |
| nslookup | 도메인 → IP 질의 (DNS) |
netstat 옵션: -a 모든 연결·대기 포트 / -r 라우팅 테이블 / -n 숫자(IP)로 출력
-t TCP / -u UDP / -p 프로그램명과 PID
netstat 상태: LISTEN(대기) → SYN_SENT(요청) → SYN_RECEIVED(수신 후 대기) → ESTABLISHED(통신 중)
⚠️ 함정 ⑩ "netstat 옵션 설명으로 옳지 않은 것" → "-t : 연결된 이후의 시간을 표시" (-t는 TCP). 2021-08~2026-05에 **5번**. (`-r` 라우팅 테이블, `-p` PID·프로그램명은 맞는 설명)
⚠️ "열려 있는 port 정보를 확인하는 명령어" = **netstat** (2023-02~2026-08, 2026-08, 4번), "불필요한 service port가 열려 있는지 확인" = netstat -antp (2023-05, 2024-08)
⚠️ 2025-11에는 ss -tulpn이 보기로 나왔습니다. 최신 배포판에서는 netstat 대신 ss, ifconfig 대신 ip addr를 쓴다는 점도 알아 두세요.
⚠️ ifconfig 사용 형식 = ifconfig eth0 192.168.2.4 up (인터페이스 이름 먼저), "해당 사이트와의 통신 상태 점검" = ping (2024-11)
⚠️ DNS 서버 주소가 잘못됐을 때 확인·수정하는 파일 = /etc/resolv.conf (2020-02, 2022-02~2024-05)
vi 편집기 ⭐⭐
vi에는 명령 모드 → (i, a, o) → 입력 모드 → (ESC) → 명령 모드 → (:) → 마지막 행 모드 세 가지 모드가 있습니다.
| 입력 | 동작 |
| i / a / o | 커서 위치 / 오른쪽 한 칸 / 아래 새 줄에서 입력 시작 (I, A, O는 행 처음·끝·위쪽 줄) |
| h j k l | 왼쪽 / 아래 / 위 / 오른쪽 이동 |
| x / dd | 문자 하나 삭제 / 한 행 삭제 |
| u | 명령 취소 (undo) |
| :w | 저장 |
:wq (또는 ZZ) |
저장 후 종료 |
| :q! | 저장하지 않고 강제 종료 |
| :q | 변경이 없을 때만 종료 |
| :10,20s/old/new/g | 10~20행의 old를 new로 치환 |
⚠️ 함정 ⑪ "vi에서 저장하지 않고 입력한 뒤, 바로 종료되지 않는 명령은?" → :q (변경 사항이 있으면 거부됨). 2023-11, 2026-05.
⚠️ 치환 명령 :10,20s/old/new/g가 2021-08~2023-11에 4번 나왔고, 문자 하나 삭제 = x가 2022-08·2025-08에 나왔습니다.
패키지·Samba·Apache·BIND ⭐⭐
RPM(패키지 관리)
rpm -ivh 패키지.rpm 설치(+상세·진행 표시) rpm -e 패키지 삭제
rpm -qa 설치된 전체 패키지 rpm -qa | grep bind 설치 여부 확인
의존성까지 자동 해결 = yum (예: yum install httpd) / Debian·Ubuntu 계열은 dpkg·apt
Samba
Linux가 윈도우와 파일·프린터를 공유하게 해 주는 서비스입니다.
SMB 프로토콜 기반이고 교재는 137·139번 포트를 사용한다고 설명합니다 (실무에서는 445번도 중요).
smbd = 세션·자료 전송·프린터 담당 데몬 / nmbd = 이름 서비스(자원 목록) 데몬 / 설정 파일 = smb.conf
"Linux와 이기종 OS의 파일·프린터를 공유하기 위해 설치하는 서버/클라이언트 프로그램 = Samba"는 2013-10~2018-10에 4번 나왔지만, 2020년 이후에는 거의 출제되지 않습니다. 가볍게만 정리하세요.
Apache(웹 서버) — 설정 파일 httpd.conf
| 지시자 | 설명 |
| Listen | 서비스 포트 번호 지정·변경 (예: Listen 8081) — 2023-02, 2024-11, 2025-08 |
| KeepAliveTimeout | 연결 후 요청이 없을 때 대기하는 시간(초) — "80초간 요청이 없으면 종료" = KeepAliveTimeout 80 (2023-08, 2024-05, 2025-11) |
| LimitRequestBody | POST 요청 등 본문 크기 제한 — 2025-02, 2026-02 |
| DocumentRoot | 웹 문서 루트 디렉터리 |
| Options Indexes | 디렉터리 목록 노출 → Directory Indexing 공격에 취약 (2025-05) |
⚠️ "아파치 환경설정 파일 = httpd.conf" (2020-08, 2021-11), 1~1023번 Well-known port를 쓰려면 관리자 권한이 필요합니다 (2024-05, 2025-11).
BIND(DNS 서버)
| 항목 | 설명 |
| 설정 파일 | /etc/named.conf (교재 표기 names.conf는 오기) |
listen-on |
질의를 받을 IP·포트 (port 53) |
directory "/var/named" |
zone 파일이 있는 디렉터리 |
| 문법 검사 | named-checkconf |
| 설치 확인 | rpm -qa | grep bind |
| 방화벽 | 53번 포트를 UDP와 TCP 모두 허용해야 함 (2025-05) |
SOA 레코드 = zone의 시작이자 기본 관리 정보 (zone 파일은 항상 SOA로 시작)
Refresh = 주 서버와 보조 서버의 동기 주기
TTL = 캐시 유지 시간 → TTL이 길면 캐시를 오래 쓰므로 DNS 부하는 오히려 줄어든다
MX 레코드 우선순위 = 숫자가 낮을수록 우선순위가 높다
⚠️ 함정 ⑫ "SOA 레코드 설명으로 옳지 않은 것" → "TTL 값이 길면 DNS의 부하가 늘어난다". 이 문제는 2019-11~2025-05에 7번, 그 이전 "Linux DNS의 SOA" 변형이 2013-04~2015-10에 4번 있었습니다.
⚠️ "메일 서버는 10번째 우선순위를 가지며 값이 높을수록 우선순위가 높다"도 오답입니다 (2021-02~2022-08).
기출 Q&A
Q. Linux 시스템에서 사용자가 내린 명령어를 Kernel에 전달해주는 역할을 하는 것은?
A. Shell
Q. 특정 파일의 권한이 -rwxr-x--x일 때, 설명으로 옳지 않은 것은?
A. "동일한 그룹에 속한 사용자는 실행 권한만을 갖는다" — 그룹은 읽기+실행(r-x), 모드는 751입니다.
Q. 특정 서비스를 제공하는 Daemon이 살아있는지 확인하는 명령어는?
A. ps
Q. Linux 디렉터리 구성 설명으로 옳지 않은 것은?
A. "/usr - 사용자 계정이 위치하는 파티션 위치" — 사용자 계정은 /home입니다.
Q. 데몬(Daemon)에 관한 설명 중 옳지 않은 것은?
A. "시스템 부팅 때만 시작될 수 있다"
Q. 사용 중인 메모리 양과 사용 가능한 메모리 양, 공유 메모리와 가상 메모리 정보를 보는 명령어는?
A. free
Q. 기존에 설정된 crontab을 삭제하려고 할 때 올바른 명령어는?
A. crontab -r
Q. DNS의 SOA 레코드에 대한 설명으로 옳지 않은 것은?
A. "TTL 값이 길면 DNS의 부하가 늘어난다"
Q. /etc/passwd 내용 설명으로 옳지 않은 것은?
A. "패스워드는 'x'이다" — x는 암호가 shadow 파일에 저장되어 있다는 표시입니다.
Q. sudo chage -m 2 -M 100 ( ) -I 10 -E 2026-12-25 John에서 10일 전에 암호 변경 경고를 주려면 ( )에 들어갈 옵션은?
A. -W 10
Q. 파일의 원래 권한은 유지한 채 모든 사용자에게 쓰기 권한을 추가하는 명령과 결과가 다른 것은?
A. chmod go=w file — =는 기존 권한을 덮어씁니다.
Q. 비인가자의 로그인 시도 이력을 확인하기 위한 명령어는?
A. lastb
Q. 접속자에게 메시지를 보내고 5분 후 시스템을 재부팅하는 명령어는?
A. shutdown -r +5 'Warning! …'
Q. vi에서 입력 후 저장하지 않았을 때, 바로 종료되지 않는 명령은?
A. :q
Q. 파일에 i 속성이 설정되어 쓰기·삭제가 안 될 때 속성을 확인하는 명령어는?
A. lsattr
Q. Apache의 서비스 포트를 well-known port가 아닌 다른 번호로 바꿀 때 httpd.conf에서 변경하는 옵션은?
A. Listen
💡 실무에서는?
Linux 서버 점검에서 가장 먼저 보는 것은 계정과 권한입니다.
/etc/shadow는 root만 읽을 수 있어야 하고(보통 000 또는 640), 기본 umask 022를 그대로 두면 새 파일이 모든 사용자에게 읽히니 서버 용도에 따라 027로 낮추는 경우가 많습니다. 시험의 chmod 777, chmod 666 같은 보기가 실무에서는 "절대 하면 안 되는 것"의 예시라고 생각하면 기억하기 쉽습니다.
보안 점검 쪽에서는 find / -perm -4000(SUID 파일 검색)과 find / -nouser -o -nogroup(소유자 없는 파일 검색)이 점검 체크리스트의 단골입니다. 기출의 find -nouser, -perm이 그대로 이어지는 지점입니다.
로그인 실패 이력은 시험에서는 lastb지만 실무에서는 /var/log/secure(RHEL 계열) 같은 인증 로그를 함께 보고, root 원격 로그인은 SSH 설정(PermitRootLogin no)으로 막은 뒤 일반 계정 + sudo로 운영하는 것이 기본입니다.
서비스 관리는 현업의 RHEL 계열에서는 service나 init 대신 systemctl이 표준이고, netstat·ifconfig보다 ss·ip를 먼저 씁니다. 그래서 2025~2026년 기출에 ss, systemctl이 등장하기 시작한 것은 시험이 현실을 따라가는 신호로 볼 수 있습니다. 불필요한 LISTEN 포트를 netstat -antp나 ss -tulpn으로 확인하고, 쓰지 않는 서비스는 systemctl disable로 꺼 두는 것이 하드닝의 첫걸음입니다.
마지막으로 rm -rf는 휴지통이 없어서 복구가 안 됩니다.
변수 오타(rm -rf $DIR/*)로 시스템이 통째로 지워지는 사고가 실제로 일어나니, 삭제 전에 ls로 대상을 확인하는 습관이 필요합니다.
디스크 Full 장애의 단골 원인은 /var/log와 /tmp이니 df -h, du -sh를 같이 기억해 두세요.
핵심 정리
✅ 구조: 하드웨어 → 커널 → 셸 → 응용프로그램 / 셸 = 명령어 해석기(bash) / 프롬프트 일반 $, root #
✅ 디렉터리: /etc 설정, /bin·/sbin 명령, /dev 장치, /proc 가상 정보, /var 로그·메일, /home 사용자, /usr ≠ 사용자 계정
✅ 디스크: fdisk(분할) → mkfs(포맷) → mount(연결) → fsck(점검) / 자동 마운트 /etc/fstab / 2TB↑ GPT = gdisk
✅ SWAP = 디스크를 메모리처럼 / GRUB = Linux 부트 로더 / ext3부터 저널링
✅ /etc/passwd 7필드(x = 암호는 shadow), shadow 9필드, UID 0 = root
✅ chage: -m 최소, -M 최대, -W 경고, -I 비활성, -E 만료일, -l 조회
✅ 권한 r4 w2 x1, rwxr-x--x = 751, a-w, go=w는 덮어쓰기, umask: 파일 666 − umask
✅ chown = 소유자 변경(root), chgrp = 그룹 변경, -R = 하위 포함
✅ ps -ef / top = 실시간 / kill / nohup / 데몬은 부팅 때만 시작되는 것이 아님
✅ crontab: 분 시 일 월 요일, -e 편집 -l 조회 -r 삭제 / 월요일 10시 = 0 10 * * 1
✅ shutdown -r +5 = 5분 뒤 재부팅, init 6 = 재부팅, runlevel 5 = GUI
✅ free = 메모리, du/df = 디스크, pwd = 현재 경로, rmdir = 빈 디렉터리 삭제, man = 사용법
✅ > 출력(덮어쓰기), >> 추가, < 입력, | 파이프
✅ lastb = 로그인 실패, /var/log/dmesg = 부팅 커널 메시지, lsattr = i 속성
✅ netstat: -a 전체, -r 라우팅, -n 숫자, -t TCP(시간 아님!), -p PID / ss, ip 로 대체되는 추세
✅ vi: i 입력 → ESC → :wq 저장·종료, :q! 강제 종료, :q는 변경 시 거부, :10,20s/old/new/g
✅ Apache: httpd.conf, Listen = 포트, KeepAliveTimeout, LimitRequestBody
✅ BIND: /etc/named.conf, zone = /var/named, SOA TTL이 길면 부하는 줄어듦, MX는 낮을수록 우선, 53번 UDP+TCP
다음 편부터는 4과목 네트워크 운용기기 구간입니다.
09편에서 리피터·허브·브리지·스위치·라우터 같은 네트워크 장비를 OSI 계층과 연결해서 정리합니다.
02편에서 본 OSI 7계층을 다시 꺼내 두시면 좋습니다.
궁금한 점은 댓글로 남겨주세요!
'자격증 정복 > 네트워크관리사' 카테고리의 다른 글
| 네트워크관리사 2급 필기 10 — 네트워크 구성·관리·보안 (0) | 2026.10.10 |
|---|---|
| 네트워크관리사 2급 필기 09 — 네트워크 장비 이해 (0) | 2026.10.08 |
| 네트워크관리사 2급 필기 07 — Windows Server 관리 (0) | 2026.10.07 |
| 네트워크관리사 2급 필기 06 — IPv6·보안 프로토콜 (0) | 2026.10.05 |
| 네트워크관리사 2급 필기 05 — TCP·UDP·주요 프로토콜·포트번호 (0) | 2026.10.05 |