본문 바로가기
IT/자격증

리눅스마스터 1급 2차 실기 기출 암기 노트 총 정리

by dev-centralpark 2025. 11. 4.

https://dev-centralpark.tistory.com/51

 

[2001~2502] 리눅스마스터 1급 2차 실기 문제·정답 총 정리

============================== [2502] ============================== 1. 문제 다음은 사용자 및 그룹 관리에 대한 설명이다. 괄호 안에 알맞은 명령어를 쓰시오. 가. ihdman 사용자의 로그인명을 ihduser로 변경하시오

dev-centralpark.tistory.com

※ [2001~2502] 리눅스마스터 1급 2차 실기 문제·정답 총 정리 URL

 

os 변경으로 인해 현재는 출제 안됨

yum 관련 명령

ALL: ALL : TCP Wrapper 전체 차단 규칙

in.telnetd: 192.168.5. : 텔넷 접근 허용 규칙

sshd: 192.168.5.13 : SSH 접근 허용 규칙

vsftpd: .ihd.or.kr : FTP 접근 허용 규칙

/etc/hosts.allow - TCP Wrapper 허용 목록

/etc/hosts.deny - TCP Wrapper 차단 목록

 

which :  실행될 파일의 위치 확인

whereis :  명령어와 관련된 모든 파일 위치 확인

man -k [명령어] | less : 설명 안에 키워드가 포함된 모든 명령어를 검색

man -f [명령어] | less : 특정 명령어의 요약 정보를 검색

명령어 --help : 관련 옵션 설명

 

미니멀 설치 환경이라면 man, apropos, --help(일부 동작), nano 제한

 


디렉토리 구분

“설정 파일 어디 있냐” → /etc

“로그 파일 어디 있냐” → /var/log

“사용자 홈 어디냐” → /home

“root 홈 어디냐” → /root

“장치 파일 어디냐” → /dev

“CPU/메모리/커널 정보 어디냐” → /proc

“부팅 파일 어디냐” → /boot


 

[최상빈출 - iptables]

1. 기본 문법

iptables [-t 테이블] [동작] [체인] [규칙번호/조건] [타깃]

기본값 : 테이블 옵션이 없으면 filter 테이블 사용

 

2. 테이블과 체인

filter : 일반 패킷 필터링 테이블

nat : 주소 변환 테이블

 

INPUT : 로컬 프로세스로 들어오는 패킷 처리
OUTPUT : 로컬 프로세스에서 나가는 패킷 처리
FORWARD : 내 서버를 통과하는 패킷 처리

PREROUTING : 라우팅 결정 전에 들어오는 패킷 처리 / 주로 DNAT / 목적지 주소를 변경

- PREROUTING - DNAT
POSTROUTING : 패킷이 나가기 직전에 처리 / 주로 SNAT, MASQUERADE / 출발지 주소를 변경

- POSTROUTING - SNAT

 

3. 동작 옵션

-A : 규칙 추가
-I : 규칙 삽입
-D : 규칙 삭제
-R : 규칙 교체
-L : 규칙 목록 출력
-S : 규칙을 명령형으로 출력
-F : 규칙 전체 삭제
-Z : 패킷/바이트 카운터 0으로 초기화
-N : 사용자 정의 체인 생성
-X : 사용자 정의 체인 삭제
-P : 기본 정책 설정
-E : 사용자 정의 체인 이름 변경
-C : 규칙 존재 여부 확인
-h : 도움말 출력

 

4. 규칙 조건

-s 192.168.5.13 : 출발지 주소 지정
-d 192.168.5.13 : 목적지 주소 지정
-p tcp : TCP 프로토콜 지정
-p udp : UDP 프로토콜 지정
--sport 25 : 출발지 포트 지정
--dport 80 : 목적지 포트 지정
-i eth0 : 들어오는 인터페이스 지정
-o eth0 : 나가는 인터페이스 지정
-m tcp : tcp 매치 확장 모듈 사용
-f : IPv4 단편 패킷 조건
번호(rulenum) : -I, -R, -D chain 번호 에서 사용, 1부터 시작

 

5. 타깃

-j ACCEPT : 패킷 허용
-j DROP : 패킷 폐기
-j REJECT : 패킷 거부 및 응답 전송
-j LOG : 패킷 로그 기록
-j DNAT : 목적지 주소 변환
-j SNAT : 출발지 주소 변환
-j MASQUERADE : 동적 출발지 주소 변환
-j RETURN : 현재 체인 처리 종료 후 이전 체인으로 복귀
-j REDIRECT : 패킷 목적지를 로컬 시스템으로 변경
-g 체인이름 : 해당 체인으로 goto

 

6. 필터 테이블 기본 문제

-F : 모든 체인의 규칙 전체 삭제
-F INPUT : INPUT 체인의 규칙 삭제

-P INPUT DROP : INPUT 기본 정책 DROP 설정
-P INPUT ACCEPT : INPUT 기본 정책 ACCEPT 설정

-L : 현재 규칙 목록 출력
-L INPUT --line-numbers : INPUT 체인 규칙을 번호와 함께 출력

-t filter -L : filter 테이블의 모든 체인 정책 정보 출력
-t filter -nL : filter 테이블 정책 정보를 숫자값 형태로 출력
-t filter -vL : filter 테이블 정책 정보를 패킷/바이트 포함 자세히 출력
-t filter -L INPUT : filter 테이블의 INPUT 체인만 출력

-A INPUT -s 192.168.5.13 -j ACCEPT : 특정 IP 허용 규칙 추가
-A INPUT -s 192.168.4.14 -j DROP : 특정 IP 차단 규칙 추가
-A INPUT -p tcp --dport 22 -j ACCEPT : 특정 TCP 포트 허용 규칙 추가
-A INPUT -p tcp --dport 23 -j DROP : 특정 TCP 포트 차단 규칙 추가
-A INPUT -p tcp --dport 20:30 -j DROP : 특정 TCP 포트 범위 차단 규칙 추가
-A INPUT -p udp --dport 53 -j ACCEPT : 특정 UDP 포트 허용 규칙 추가

-D INPUT 3 : INPUT 체인의 3번 규칙 삭제
-I INPUT 4 -j LOG : INPUT 체인의 4번째 위치에 LOG 규칙 삽입

 

7. NAT 테이블 기본 문제

-t nat : NAT 테이블 사용
-t nat -L : NAT 테이블의 규칙 출력
-t nat -L PREROUTING : NAT 테이블의 PREROUTING 체인 규칙 출력
-t nat -L POSTROUTING : NAT 테이블의 POSTROUTING 체인 규칙 출력
-t nat -F PREROUTING : NAT 테이블의 PREROUTING 체인 규칙 초기화
-t nat -F POSTROUTING : NAT 테이블의 POSTROUTING 체인 규칙 초기화

-A PREROUTING : PREROUTING 체인 규칙 추가
-A POSTROUTING : POSTROUTING 체인 규칙 추가
-o eth0 : 외부로 나가는 인터페이스 eth0 지정
-i eth0 : 들어오는 인터페이스 eth0 지정

-t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100 : 특정 TCP 포트를 내부 서버 IP로 DNAT 설정
-t nat -A POSTROUTING -o eth0 -j SNAT --to 200.100.50.10 : 특정 인터페이스로 나가는 패킷의 출발지 IP를 SNAT 설정
-t nat -A POSTROUTING -o eth0 -j MASQUERADE : 특정 인터페이스로 나가는 패킷의 출발지 IP를 MASQUERADE 설정

 

8. 저장/복원

iptables-save > firewall.sh : 현재 iptables 규칙 저장
iptables-restore < firewall.sh : 저장한 iptables 규칙 복원

 

9. 시험용 한 줄 암기

DNAT -> PREROUTING
SNAT / MASQUERADE -> POSTROUTING
INPUT -> 내 서버로 들어오는 패킷
OUTPUT -> 내 서버에서 나가는 패킷
FORWARD -> 내 서버를 통과하는 패킷
-A -> 맨 뒤에 추가
-I -> 원하는 위치에 삽입
-D -> 번호 또는 규칙으로 삭제
-L -> 조회
-F -> 초기화
-P -> 기본 정책 설정

 

10. 시험에서 자주 쓰는 완성형

iptables -P INPUT DROP
iptables -A INPUT -s 192.168.5.13 -j ACCEPT
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -D INPUT 3
iptables -I INPUT 4 -j LOG
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 200.100.50.10
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

 

[최상빈출 - Apache]

/usr/local/apache/conf/httpd.conf : Apache 기본 설정 파일

/usr/local/apache/conf/extra/httpd-userdir.conf : UserDir 설정 파일 경로

/usr/local/apache/conf/extra/httpd-vhosts.conf : 가상호스트 설정 파일 경로

/usr/local/apache/bin/httpd -t : Apache 설정 문법 검사

/usr/local/apache/bin/httpd -M : 로드된 모듈 목록 확인

/usr/local/apache/bin/apachectl -M 또는 /usr/local/apache/bin/httpd -M : Apache 모듈 목록 확인 대체 명령

/usr/local/apache/bin/apachectl graceful : 연결 끊지 않고 설정 재적용

/usr/local/apache/bin/apachectl restart : Apache 재시작

Listen : Apache 포트 설정 지시어

ServerName : 서버 이름 설정 지시어

ServerAdmin : 관리자 메일 주소 설정 지시어

DocumentRoot : 웹 문서 루트 설정 지시어

UserDir : 사용자 웹 디렉터리 지정 지시어

ErrorDocument : 에러 페이지 지정 지시어

.htaccess : 디렉터리별 접근 제어 파일

htpasswd -c : 아파치 인증 사용자 파일 최초 생성

AuthName : 인증 영역 이름 설정 지시어

AuthUserFile : 인증 사용자 파일 경로 지정 지시어

Require : 접근 허용 대상 지정 지시어

AllowOverride AuthConfig : .htaccess 인증 설정 허용 값

 

[최상빈출 - DNS]

1. 존 선언 파일 / 존 선언 구문

/etc/named.conf : DNS 기본 설정 파일
/etc/named.rfc1912.zones : 존 설정 분리 파일

zone "ihd.or.kr" IN { ... }; : 정방향 존 선언
zone "5.168.192.in-addr.arpa" IN { ... }; : 역방향 존 선언

type master; : 해당 존을 이 서버가 직접 관리하는 주(master) 존으로 지정
file "ihd.zone"; : 정방향 존 파일 지정
file "ihd.rev"; : 역방향 존 파일 지정

예시
zone "ihd.or.kr" IN {
    type master;
    file "ihd.zone";
};

zone "5.168.192.in-addr.arpa" IN {
    type master;
    file "ihd.rev";
};

2. 전체 설정 검사 / 존 파일 검사

named-checkconf : named 전체 설정 문법 검사
named-checkzone 존이름 존파일경로 : 특정 존 파일 문법 검사

예시
named-checkconf
named-checkzone ihd.or.kr /var/named/ihd.zone
named-checkzone 5.168.192.in-addr.arpa /var/named/ihd.rev

3. options 블록에서 자주 쓰는 것

forward only; : 질의를 포워더로만 전달하고, 포워더 실패 시 서버가 직접 추가 질의하지 않음
forward first; : 질의를 포워더에 먼저 전달하고, 포워더 실패 시 서버가 직접 질의함
forwarders { 8.8.8.8; 8.8.4.4; }; : 질의를 넘길 외부 DNS 서버 지정
allow-query { 192.168.12/24; 192.168.3.13; }; : DNS 질의를 허용할 대상 지정
allow-recursion { any; }; : 재귀 질의를 허용할 대상 지정

예시
options {
    directory "/var/named";
    allow-recursion { any; };
    forward only;
    forwarders { 8.8.8.8; 8.8.4.4; };
    allow-query { 192.168.12/24; 192.168.3.13; };
};

4. zone 블록에서 자주 쓰는 것

allow-transfer { 203.247.60.0/24; }; : 존 전송 허용 대상 지정

예시
zone "zone.com" IN {
    type master;
    file "zone.com.db";
    allow-transfer { 203.247.60.0/24; };
};

5. ACL 정의할 때 쓰는 것

acl ihd { 192.168.5.13; 192.168.12.22; 192.168.6.0/24; };

의미
여러 호스트/네트워크를 ihd 라는 이름으로 묶어두고
allow-query, allow-transfer 등에 넣어서 사용한다.

6. 정방향 존 파일에서 쓰는 것

@   IN SOA ns.ihd.or.kr. kait.ihd.or.kr. ( ... ) : SOA 레코드
    IN NS  ns.ihd.or.kr. : 네임서버 레코드
    IN MX  10 ihd.or.kr. : 메일서버 레코드
www IN A   192.168.5.13 : A 레코드
www IN CNAME server1.ihd.or.kr. : CNAME 레코드

의미
A      : 이름 -> IP
CNAME  : 별칭 이름 -> 실제 이름
MX     : 메일 서버 지정
NS     : 해당 존을 담당하는 네임서버 지정
SOA    : 존의 기본 관리 정보

7. 역방향 존 파일에서 쓰는 것

@   IN SOA ns.kait.or.kr. ihdman.kait.or.kr. ( ... ) : SOA 레코드
    IN NS  ns.kait.or.kr. : 네임서버 레코드
15  IN PTR ihd.or.kr. : PTR 레코드

의미
PTR : IP -> 이름으로 바꾸는 역방향 조회 레코드
주의 : /24 기준 역방향 존에서는 왼쪽에 마지막 옥텟만 쓰는 경우가 많다.
예) 192.168.5.15 -> 15 IN PTR ihd.or.kr.

8. 자주 헷갈리는 것

ihd.or.kr : 정방향 존 이름
5.168.192.in-addr.arpa : 192.168.5.0/24 기준 역방향 존 이름
master : zone 블록 안의 type 값
ns.ihd.or.kr. : FQDN 전체 이름
kait.ihd.or.kr. : SOA에서 관리자 메일 주소 kait@ihd.or.kr 를 DNS 형식으로 쓴 값
ihdman.kait.or.kr. : SOA에서 관리자 메일 주소 ihdman@kait.or.kr 를 DNS 형식으로 쓴 값

점(.)의 의미
- 점이 있으면 완전한 이름(FQDN)
- 점이 없으면 현재 존 기준 상대 이름으로 해석될 수 있음

9. 최소 암기 포인트

정방향 존 선언
zone "ihd.or.kr" IN {
    type master;
    file "ihd.zone";
};

역방향 존 선언
zone "5.168.192.in-addr.arpa" IN {
    type master;
    file "ihd.rev";
};

전체 검사
named-checkconf

존 파일 검사
named-checkzone ihd.or.kr /var/named/ihd.zone

포워더 관련
forward only;
forward first;
forwarders { 8.8.8.8; 8.8.4.4; };

제어 관련
allow-query { ... };
allow-recursion { ... };
allow-transfer { ... };

정방향 레코드
IN SOA
IN NS
IN MX
IN A
IN CNAME

역방향 레코드
IN SOA
IN NS
IN PTR

 

[최상빈출 - 사용자 / 계정 / 그룹]

passwd -S : 사용자 패스워드 상태 확인

passwd -l : 패스워드 잠금

passwd -u : 패스워드 잠금 해제

passwd -d : 사용자 패스워드 삭제

useradd -g : 사용자 생성 시 기본 그룹 지정

useradd -G : 사용자 생성 시 추가 그룹 지정

useradd -d : 사용자 생성 시 홈 디렉터리 지정

useradd -m : 사용자 생성 시 홈 디렉터리 함께 생성

usermod -l : 사용자 로그인명 변경

usermod -e : 계정 만기일 설정

usermod -f : 패스워드 만료 후 비활성 기간 설정

usermod -aG : 기존 그룹 유지하며 추가 그룹 등록

groupmod -n : 그룹명 변경

gpasswd -A : 그룹 관리자 지정

chage -E : 계정 만기일 설정

/etc/passwd : 사용자 계정 정보 파일

/etc/gshadow : 그룹 shadow 정보 파일

/etc/skel : 사용자 생성 시 기본 복사 디렉터리

/etc/login.defs : 계정/패스워드 기본 정책 파일

/etc/default/useradd : useradd 기본값 파일

 

[최상빈출 - 로그 / 로그인기록 / rsyslog]

/var/log/messages : 일반 시스템 로그 파일

/var/log/secure : 인증/보안 관련 로그 파일

/var/log/wtmp : 로그인 성공/로그아웃/재부팅 기록 파일

/var/log/btmp : 로그인 실패 기록 파일

/var/log/lastlog : 마지막 로그인 정보 파일

last : 로그인 성공 기록 확인

lastb : 로그인 실패 기록 확인

lastlog : 마지막 로그인 정보 확인

lastlog -u : 특정 사용자의 마지막 로그인 확인

lastlog -b : 장기 미로그인 사용자 확인

last -s -3days : 최근 3일 로그인 기록 확인

logger : 시스템 로그에 메시지 직접 기록

authpriv.* : 인증 관련 모든 로그 기록 규칙

authpriv.alert : 인증 관련 alert 로그만 기록 규칙

mail.*;mail.!=info : 메일 로그 전체 기록, info 제외

mail.*;mail.!=debug : 메일 로그 전체 기록, debug 제외

cron.*;cron.!=notice : cron 로그 전체 기록, notice 제외

*.emerg : 모든 서비스의 emerg 로그 처리 규칙

*.=alert : alert 수준만 선택하는 규칙

kern.alert : 커널 alert 로그 선택 규칙

:omusrmsg:root : 로그인한 root 사용자 터미널로 로그 전송

@IP : UDP 방식 원격 로그 전송

@@IP : TCP 방식 원격 로그 전송

 

로그인명 변경            → usermod -l 새이름 기존이름
그룹명 변경              → groupmod -n 새그룹명 기존그룹명
계정 만기일 설정         → usermod -e 날짜 사용자 / chage -E 날짜 사용자
그룹 관리자 지정         → gpasswd -A 사용자 그룹명
주 그룹 지정             → useradd -g 그룹명 사용자
추가 그룹 지정           → useradd -G 그룹명 사용자
추가 그룹 포함           → usermod -aG 그룹명 사용자
홈 디렉터리 지정         → useradd -d /경로 사용자
홈 디렉터리 생성         → useradd -m ...
기본 홈 경로 변경        → useradd -D -b /home2
기본 셸 변경             → useradd -D -s /bin/csh
기본 셸/홈 확인 파일     → /etc/default/useradd
패스워드 정책 파일       → /etc/login.defs
사용자 정보 파일         → /etc/passwd
사용자 shadow            → /etc/shadow
그룹 정보 파일           → /etc/group
그룹 shadow              → /etc/gshadow
새 사용자 기본 파일      → /etc/skel

 

마지막 로그인 정보 파일      → /var/log/lastlog
마지막 로그인 정보 확인      → lastlog
N일 이상 미로그인 사용자     → lastlog -b N
특정 사용자의 마지막 로그인  → lastlog -u 사용자

로그인/로그아웃 기록 파일    → /var/log/wtmp
로그인 기록 확인             → last
최근 N일 로그인 기록         → last -s -3days  / lastlog -t 3 (정리본 혼재)

로그인 실패 기록 파일        → /var/log/btmp
로그인 실패 기록 확인        → lastb
특정 사용자 실패 기록        → lastb 사용자
최근 실패 N건                → lastb -n 3

 

emerg / panic = 최고 위험
alert         = 즉시 조치 필요
crit          = 치명적
err           = 오류
warn          = 경고
notice        = 일반적이지만 중요한 알림
info          = 일반 정보
debug         = 디버그 정보

 

[최상빈출 - DHCP]

range dynamic-bootp : DHCP 동적 할당 범위 지정

option routers : 기본 게이트웨이 지정

option domain-name-servers : DNS 서버 지정

option domain-name : 도메인명 지정

option broadcast-address : 브로드캐스트 주소 지정

default-lease-time : 기본 임대 시간 지정

max-lease-time : 최대 임대 시간 지정

host : 고정 IP 호스트 블록 선언

hardware ethernet : 호스트 MAC 주소 지정

fixed-address : 호스트 고정 IP 지정

 

subnet 192.168.12.0 netmask 255.255.255.0 {
    range dynamic-bootp 192.168.12.10 192.168.12.100;
    option routers 192.168.12.254;
    option domain-name-servers 192.168.5.13;
    option domain-name "ihd.or.kr";
    option broadcast-address 192.168.12.255;
    default-lease-time 7200;
    max-lease-time 10800;
}

host ihd_com {
    hardware ethernet 00:0C:29:AA:BB:CC;
    fixed-address 192.168.5.13;
}

 

[상빈출 - 스케줄 / 우선순위]

crontab -l : 현재 사용자의 cron 목록 확인

crontab -e -u : 특정 사용자의 cron 편집

crontab -r -u : 특정 사용자의 cron 삭제

nice -n : 실행할 프로세스의 NI 값 지정

renice -n -p : 실행 중인 프로세스의 NI 값 변경

*/10 * * * * : 10분마다 실행

10 4 1 */2 * : 2개월마다 1일 4시10분 실행

5 4 * * 1,4,5 : 월 목 금 4시5분 실행

10 9 * * 1 : 매주 월요일 9시10분 실행

 

[상빈출 - 메일]

1. 최종 수신 도메인 등록
파일: /etc/mail/local-host-names
의미: 이 서버가 "내가 받는 도메인"이 무엇인지 등록하는 파일이다. 여기에 적힌 도메인으로 온 메일을 이 서버가 최종 수신 대상으로 본다.
예시: ihd.or.kr | kait.or.kr
동작: user@ihd.or.kr 로 메일이 오면, 이 서버가 그 도메인을 자기 도메인으로 인정한다.

2. 메일 별칭 설정
파일: /etc/aliases
의미: 특정 계정으로 온 메일을 다른 사용자나 여러 사용자에게 전달한다.
형식: 별칭이름: 대상 | 별칭이름: 사용자1, 사용자2 | 별칭이름::include:/파일경로

예시: webmaster: ihdman, kaitgirl | admin: ihduser, kaituser | help::include:/etc/helpdesk
동작: webmaster 앞으로 온 메일을 ihdman, kaitgirl에게 전달한다. help 앞으로 온 메일은 /etc/helpdesk 파일 안에 적힌 사용자들에게 전달한다.
적용: newaliases 또는 sendmail -bi

3. 사용자별 포워딩
파일: /home/사용자/.forward
의미: 특정 사용자에게 도착한 메일을 다른 주소나 계정으로 넘긴다.
예시: kaituser | otheruser@ihd.or.kr
동작: ihduser 앞으로 온 메일을 .forward 내용대로 다시 전달한다.

4. 가상 사용자 매핑
파일: /etc/mail/virtusertable
의미: 도메인 주소를 실제 로컬 사용자나 다른 주소로 바꿔 매핑한다.
형식: 가상주소 실제대상 | @도메인 실제대상주소
예시: ceo@ihd.or.kr ihduser | ceo@kait.or.kr kaituser | @ihd.org ihdgirl@ihd.or.kr
동작: ceo@ihd.or.kr 로 온 메일은 ihduser에게 간다. @ihd.org 로 온 메일은 전부 ihdgirl@ihd.or.kr 쪽으로 넘긴다.
적용: makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

 

5. 접근 제어
파일: /etc/mail/access
의미: 누구의 메일을 받을지, 버릴지, 거부할지 정하는 파일이다.
형식: 조건 처리방식
예시: From:spam.com REJECT | From:spam.com DISCARD | Connect:192.168.12.22 DISCARD
동작: spam.com 에서 온 메일을 거부하거나 폐기한다. 192.168.12.22 에서 접속한 메일은 폐기한다.
차이: REJECT = 거부 | DISCARD = 조용히 폐기
적용: makemap hash /etc/mail/access < /etc/mail/access

6. sendmail 기본 설정 생성
원본 파일: /etc/mail/sendmail.mc
생성 파일: /etc/mail/sendmail.cf
의미: 실제 설정은 보통 sendmail.mc를 수정하고, 그걸 sendmail.cf로 변환해서 사용한다.
생성: m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
동작: mc를 수정한 뒤 cf를 다시 만들어야 반영된다.

7. sendmail.cf 안에서 직접 보던 값
파일: /etc/mail/sendmail.cf
예시: Djihd.or.kr
의미: 기본 발신 도메인을 지정하는 값이다.
주의: 이건 최근 기출 중심축은 아니다. 우선순위는 local-host-names, aliases, virtusertable, access 쪽이 더 높다.

 

[상빈출 - NFS / Samba / FTP]


1. 기본 설정파일 경로(최우선 암기)

NFS
/etc/exports : NFS 공유 설정 파일

Samba
/etc/samba/smb.conf : Samba 메인 설정 파일

FTP(vsftpd)
/etc/vsftpd/vsftpd.conf : vsftpd 메인 설정 파일
/etc/vsftpd/ftpusers : FTP 접속 금지 사용자 목록
/etc/vsftpd/user_list : FTP 특정 사용자 허용/차단 목록

2. NFS
/etc/exports : NFS 공유 설정 파일
showmount -e 서버IP : NFS 서버 공유 목록 확인
root_squash : 클라이언트 root를 일반 사용자로 매핑
no_root_squash : 클라이언트 root 권한 유지
all_squash : 모든 사용자를 일반 사용자로 매핑

3. Samba
/etc/samba/smb.conf : Samba 메인 설정 파일
smbclient -L 서버IP : Samba 공유 목록 확인
smbclient //서버IP/공유명 : Samba 공유 디렉터리 접속
-U user%pass : Samba 접속 사용자와 비밀번호 지정
testparm : smb.conf 설정 문법 검사
smbpasswd -a : Samba 사용자 등록

공유 설정 핵심 지시어
path : Samba 공유 디렉터리 경로
valid users : Samba 접근 허용 사용자 지정
write list : Samba 쓰기 허용 사용자 지정

기본 환경 지시어
workgroup : Samba 작업 그룹 이름
server string : Samba 서버 설명
netbios name : Samba NetBIOS 이름
hosts allow : Samba 접근 허용 호스트 지정

4. FTP(vsftpd)
/etc/vsftpd/vsftpd.conf : vsftpd 메인 설정 파일
anonymous_enable=YES : FTP 익명 접속 허용
local_enable=YES : FTP 로컬 사용자 접속 허용
chroot_local_user=YES : FTP 사용자를 홈 디렉터리에 가둠
allow_writeable_chroot=YES : chroot 환경에서 쓰기 권한 허용
/etc/vsftpd/ftpusers : FTP 접속 금지 사용자 목록
/etc/vsftpd/user_list : FTP 특정 사용자 허용/차단 목록

5. 시험용 최소 암기 세트
NFS
/etc/exports : NFS 공유 설정 파일
showmount -e 서버IP : NFS 서버의 공유 목록 확인

클라이언트의 root 사용자가 서버에서도 root 권한을 유지하도록 하는 옵션 → no_root_squash 

클라이언트의 root 사용자를 서버의 일반 사용자 권한으로 매핑하는 옵션 → root_squash 

클라이언트의 모든 사용자(root 포함)를 서버의 일반 사용자 권한으로 매핑하는 옵션 → all_squash 

클라이언트의 모든 사용자를 일괄적으로 일반 사용자 권한으로 매핑하지 않는 옵션 → no_all_squash


Samba
/etc/samba/smb.conf : Samba 메인 설정 파일
smbclient -L 서버IP : Samba 서버의 공유 목록 확인
smbclient //서버IP/공유명 : Samba 공유 디렉터리에 접속
-U user%pass : Samba 접속 사용자와 비밀번호 지정
testparm : smb.conf 설정 문법 검사
smbpasswd -a : Samba 사용자 등록
valid users : Samba 접근 허용 사용자 지정
write list : Samba 쓰기 허용 사용자 지정

FTP
/etc/vsftpd/vsftpd.conf : vsftpd 메인 설정 파일
anonymous_enable=YES : 익명 사용자 FTP 접속 허용
local_enable=YES : 로컬 사용자 FTP 접속 허용
chroot_local_user=YES : 로컬 사용자를 홈 디렉터리에 가둠
allow_writeable_chroot=YES : chroot 환경에서 쓰기 권한 허용
/etc/vsftpd/ftpusers : FTP 접속 금지 사용자 목록 파일
/etc/vsftpd/user_list : 특정 사용자 허용/차단에 사용하는 목록 파일

 

[상빈출 - 패키지 / 백업]

1. 패키지 관리

[dnf]
dnf search <문자열> : 저장소에서 패키지 검색
dnf install <패키지명> : 패키지 설치
dnf remove <패키지명> : 설치된 패키지 삭제
dnf history : dnf 작업 이력 확인
dnf repolist : 활성 저장소 목록 확인
dnf repolist --disabled : 비활성 저장소 목록 확인
dnf clean all : dnf 캐시 전체 삭제
dnf config-manager --set-enabled <저장소명> : 비활성 저장소 활성화

[rpm]
rpm -e <패키지명> : 설치된 패키지 삭제
rpm -ql <패키지명> : 설치된 패키지가 설치한 파일 목록 확인
rpm -qf <파일경로> : 특정 파일을 설치한 패키지 확인
rpm -qR <패키지명> : 패키지 의존성 확인
rpm -qc <패키지명> : 패키지 설정 파일 목록 확인
rpm -qlp <rpm파일명> : 설치하지 않은 rpm 파일 내부 목록 확인
rpm -V <패키지명> : 설치된 패키지 무결성/변경 여부 검증

2. 백업 / 복원

[dd]
dd if=<원본> of=<대상> : 블록 단위 그대로 복사
dd if=/dev/sdb1 of=/dev/sdc1 : /dev/sdb1 내용을 /dev/sdc1으로 그대로 복사
dd if=/dev/sda1 of=/dev/sdb1 bs=4k : 블록 크기 4KB로 파티션 복사

[cpio]
find <경로> | cpio -ovF <백업파일명> : 파일 목록을 받아 아카이브 생성 후 진행 과정 출력하며 파일로 저장
find <경로> -print | cpio -ov > <백업파일명> : 파일 목록을 받아 아카이브 생성 후 리다이렉션으로 저장
cpio -tvF <백업파일명> : 아카이브 내부 파일 목록 확인
cpio -tv < <백업파일명> : 아카이브 내부 파일 목록 확인
cpio -ivF <백업파일명> : 아카이브 복원
cpio -id < <백업파일명> : 아카이브 복원
cpio -ovF : 생성 + 진행 출력 + 파일 지정
cpio -tvF : 내용 확인 + 자세히 출력 + 파일 지정
cpio -ivF : 복원 + 진행 출력 + 파일 지정
cpio -ov > : 생성 + 리다이렉션 저장
cpio -tv < : 내용 확인 + 리다이렉션 입력
cpio -id < : 복원 + 리다이렉션 입력
cpio -o : 생성
cpio -t : 내용 확인
cpio -i : 복원
cpio -v : 진행/자세히 출력
cpio -F : 아카이브 파일명 지정

[dump]
dump -0uf <백업파일명> <백업대상> : 파일시스템 전체 백업
dump -0uf home.xdump /home : /home 파일시스템 전체 백업
dump -0 : 전체 백업
dump -u : dumpdates 갱신
dump -f : 백업 파일 지정

[restore]
restore -rf <백업파일명> : dump 백업 파일 복원
restore -rf home.xdump : home.xdump 복원
restore -r : 전체 복원
restore -f : 복원 파일 지정

[rsync]
rsync -avz <원본> <대상> : 권한/시간 유지 + 자세히 출력 + 압축 전송으로 동기화 복사
rsync -avz /data/backup /backup_dir : 로컬 디렉터리 동기화 백업
rsync -avz root@192.168.5.13:/home / : 원격지 /home 디렉터리를 로컬로 복사
rsync -a : archive 모드
rsync -v : 자세히 출력
rsync -z : 압축 전송

[tar]
tar -cvf <아카이브파일명> <대상> : tar 아카이브 생성
tar -cvf obj.tar *.o : 현재 디렉터리의 .o 파일들을 obj.tar로 묶음
tar -Jcf <아카이브파일명.tar.xz> <대상> : xz 압축 tar 생성
tar -Jcf data.tar.xz /data : /data를 xz 압축 아카이브로 생성
tar -Jxf <아카이브파일명.tar.xz> : xz 압축 tar 해제
tar -Jxf data.tar.xz : xz 압축 해제
tar -Jxvf <아카이브파일명.tar.xz> : xz 압축 tar 해제 + 진행 출력
tar -Jxvf data.tar.xz : xz 압축 해제 + 진행 출력
tar -xvjf <아카이브파일명.tar.bz2> : bz2 압축 tar 해제 + 진행 출력
tar -xvjf linux.tar.bz2 : bz2 압축 해제
tar -c : 생성
tar -x : 해제
tar -v : 진행 출력
tar -f : 파일명 지정
tar -j : bz2 압축
tar -J : xz 압축


3. 컴파일 / 빌드
[gcc]
gcc -c <소스파일> : 소스 파일을 오브젝트 파일로 컴파일
gcc -c sum.c : sum.o 생성
gcc -c avg.c : avg.o 생성

gcc -o <실행파일명> <오브젝트파일들> : 오브젝트 파일을 링크해 실행 파일 생성
gcc -o calc sum.o avg.o : calc 실행 파일 생성

gcc -o <실행파일명> <소스파일> : 소스 파일을 바로 컴파일해 실행 파일 생성
gcc -o calc calc.c : calc 실행 파일 생성

 

4. 한 줄 구분

dnf : 저장소 기준 패키지 관리
rpm : 설치 패키지 정보 확인 / 삭제 / 검증
dd : 장치나 파일을 블록 단위로 그대로 복사
cpio : 파일 목록 기반 아카이브 생성 / 확인 / 복원
dump : 파일시스템 단위 전체 백업
restore : dump 백업 복원
rsync : 동기화 백업
tar : 파일/디렉터리 묶기 및 압축 생성/해제

gcc : C 소스/오브젝트 파일 컴파일 및 실행 파일 생성

 

[상빈출 - 모듈 / 커널 / RAID / LVM]

lsmod : 현재 적재된 모듈 목록 확인

modinfo : 모듈 상세 정보 확인

modprobe : 모듈 적재/제거

modprobe -r : 관련 모듈까지 함께 제거

depmod : 모듈 의존성 정보 생성

make distclean : 커널 빌드 부산물 정리

make menuconfig : 커널 옵션 메뉴 설정

make bzImage : 커널 이미지 생성

make modules : 커널 모듈 생성

make modules_install : 커널 모듈 설치

mdadm -C : RAID 생성

mdadm -D : RAID 상세 정보 확인

mdadm -S : RAID 중지

mdadm -f : RAID 디스크 장애 표시

mdadm -r : RAID 디스크 제거

/proc/mdstat : RAID 상태 확인 파일

pvcreate : 물리 볼륨 생성

vgcreate : 볼륨 그룹 생성

vgextend : 볼륨 그룹 확장

lvcreate : 논리 볼륨 생성

lvscan : 논리 볼륨 상태 확인

vgscan : 볼륨 그룹 검색

pvscan : 물리 볼륨 검색

 

[중빈출 - 보안 / 기타]

sysctl -n net.ipv4.icmp_echo_ignore_all : ping 응답 설정값 조회

sysctl -w net.ipv4.icmp_echo_ignore_all=1 : ping 응답 거부 설정

getenforce : SELinux 현재 상태 확인

setenforce 0 : SELinux permissive 전환

visudo : sudo 설정 파일 편집

sudo : 관리자 권한으로 명령 실행

/etc/ssh/sshd_config : SSH 서버 설정 파일

PermitRootLogin no : root 원격 로그인 금지

nmap -F : 주요 포트 빠른 스캔

 

[쿼터 최소 암기]
Disk Quota : 사용자별 디스크 사용량 제한 기능

usrquota : 사용자 쿼터 활성화용 마운트 옵션
예) /etc/fstab 의 4번째 필드에 defaults,usrquota

quotacheck : 쿼터 정보 파일 생성/점검
예) quotacheck /home

edquota : 사용자별 용량/파일개수 제한값 설정
예) edquota ...

bsoft / bhard : 블록(용량) 소프트/하드 한도
isoft / ihard : inode(파일 개수) 소프트/하드 한도

 

[ umask, chmod ]

umask = 새 파일/디렉터리 기본 권한 제한
chmod = 기존 파일/디렉터리 권한 변경

sticky bit = 디렉터리에서 남의 파일 삭제 제한
setgid = 디렉터리에서 새 파일 그룹 상속
setuid = 실행 파일을 소유자 권한으로 실행

 


 

주요 경로 모음

  1. /etc/passwd - 사용자 계정 정보 파일
  2. /etc/shadow - 사용자 암호 정보 파일
  3. /etc/group - 그룹 정보 파일
  4. /etc/gshadow - 그룹 암호 정보 파일
  5. /etc/skel - 사용자 홈 기본 파일 위치
  6. /etc/login.defs - 로그인/비밀번호 정책 파일
  7. /etc/default/useradd - useradd 기본 설정 파일
  8. /etc/fstab - 파일시스템 마운트 및 쿼터 설정 파일
  9. /etc/crontab - 시스템 크론 작업 설정 파일
  10. /etc/exports - NFS 공유 설정 파일
  11. /etc/samba/smb.conf - Samba 설정 파일
  12. /etc/dhcp/dhcpd.conf - DHCP 설정 파일
  13. /etc/named.conf - DNS 기본 설정 파일
  14. /var/named/ - DNS 존(zone) 파일 디렉터리
  15. /etc/mail/sendmail.mc - Sendmail 매크로 설정 파일
  16. /etc/mail/access - 메일 접근 제어 파일
  17. /etc/mail/virtusertable - 가상 사용자 매핑 파일
  18. /etc/aliases - 메일 별칭(alias) 설정 파일
  19. /etc/httpd/conf/httpd.conf - Apache 메인 설정 파일
  20. /usr/local/apache/conf/extra/httpd-userdir.conf - Apache 사용자 디렉터리 설정 파일
  21. /usr/local/apache/conf/extra/httpd-vhosts.conf - Apache 가상호스트 설정 파일
  22. /etc/vsftpd/vsftpd.conf - FTP 서버 설정 파일
  23. /etc/hosts.allow - TCP Wrapper 허용 목록
  24. /etc/hosts.deny - TCP Wrapper 차단 목록
  25. /etc/rsyslog.conf - 시스템 로그 설정 파일
  26. /etc/logrotate.conf - 로그 로테이션 설정 파일
  27. /var/log/messages - 일반 시스템 로그
  28. /var/log/secure - 인증/보안 관련 로그
  29. /var/log/maillog - 메일 관련 로그
  30. /var/log/btmp - 로그인 실패 로그
  31. /var/log/wtmp - 로그인 성공 로그
  32. /etc/sysctl.conf - 커널 파라미터 설정 파일
  33. /proc/sys/fs/file-max - 열 수 있는 파일 최대값 설정
  34. /lib/modules/$(uname -r)/modules.dep - 커널 모듈 의존성 파일
  35. /etc/selinux/config - SELinux 설정 파일

tar - cvf, xvf
-c create (생성)
-x extract (해제)
-v verbose (자세히 출력)
-f file (파일 이름 지정)
-z gzip 압축
-J xz 압축

dump - 0u -f, rf
-0 0단계(전체 백업)
-u 백업 기록 갱신
-f 파일 지정
-r 복원
-v 자세히 출력

cpio - ov, id
-o output (백업)
-i input (복원)
-v verbose
-d 디렉터리 생성

rsync - av, avz
-a archive (속성 유지)
-v verbose
-z 압축 전송
-r recursive (하위 디렉토리 포함)


■ 사용자·계정 관리
- 계정 및 그룹 정보 파일

/etc/passwd
→ 사용자 계정 정보 파일
→ 로그인명, UID, GID, 홈 디렉터리, 기본 셸 등의 정보 저장

/etc/shadow
→ 사용자 암호 및 패스워드 만기 정보 파일
→ 암호화된 패스워드, 최근 변경일, 최소/최대 사용일, 만료일 등 저장

/etc/group
→ 그룹 정보 파일
→ 그룹명, GID, 그룹 소속 사용자 정보 저장

/etc/gshadow
→ 그룹의 shadow 패스워드 정보 파일
→ 그룹 암호 및 그룹 관리자 정보 저장

/etc/skel
→ 새 사용자 생성 시 홈 디렉터리에 복사될 기본 파일 저장 디렉터리

/etc/login.defs
→ 사용자 계정 관련 기본 정책 설정 파일
→ UID/GID 범위, 패스워드 최대 사용기간, 최소 사용기간 등 설정

/etc/default/useradd
→ useradd 기본값 설정 파일
→ 기본 홈 디렉터리 경로, 기본 셸, 기본 skel 경로 등 설정

- 사용자 생성 / 수정 / 삭제

# useradd -g kait ihduser
→ 주 그룹을 kait으로 지정하여 사용자 생성

# useradd -G linuxmaster ihduser
→ 보조 그룹 linuxmaster를 지정하여 사용자 생성

# useradd -d /home/kait/ihdman ihdman
→ 홈 디렉터리를 지정하여 사용자 생성

# useradd -m -d /home/kait/ihdgirl ihdgirl
→ 홈 디렉터리를 지정하고 동시에 생성

# useradd -D -b /home2
→ 신규 사용자 기본 홈 디렉터리 경로 변경

# useradd -D -s /bin/csh
→ 신규 사용자 기본 셸 변경

# usermod -l ihduser ihdman
→ 로그인명 변경

# usermod -d /home/kaituser -m kaituser
→ 홈 디렉터리 경로 변경 및 기존 파일 이동

# usermod -L -e 2024-12-31 -f 3 john
→ 계정 잠금, 만료일, 유예기간 설정

# usermod -e 2026-12-31 kaitgirl
→ 계정 만료일 설정

# usermod -aG linuxmaster ihduser
→ 기존 그룹 유지하면서 보조 그룹 추가

# userdel ihduser
→ 사용자 삭제

# userdel -r ihduser
→ 사용자와 홈 디렉터리까지 함께 삭제

 


- 그룹 관리

# groupadd project
→ project 그룹 생성

# groupmod -n ihd kait
→ 그룹명을 kait에서 ihd로 변경

# groupdel project
→ project 그룹 삭제

- 사용자 쿼터(Disk Quota)

# vi /etc/fstab
→ 4번째 필드에 usrquota 추가 후 재마운트 필요
예: /dev/sda1 /home ext4 defaults,usrquota 1 2

# quotacheck /home
→ 사용자 쿼터 정보 파일 생성

# edquota -u ihduser
→ ihduser 사용자 쿼터 설정 편집 (block, inode 제한)

# edquota -p ihduser kaituser
→ ihduser 설정을 kaituser에게 복사

# repquota -a
→ 모든 사용자 쿼터 사용량 요약 출력

- 로그인 및 홈 환경

# mkdir /etc/skel/www
→ 신규 사용자 생성 시 기본적으로 www 디렉터리 포함

# vi /etc/login.defs
→ UID_MIN, GID_MIN, PASS_MAX_DAYS, PASS_MIN_DAYS 등 기본 정책 설정

■ 파일·링크·텍스트 처리
- 파일 링크 및 권한

# ln -s /usr/local/apache /etc/httpd
→ /usr/local/apache를 대상으로 /etc/httpd 심볼릭 링크 생성

# chmod 600 file.txt
→ 소유자만 읽기/쓰기 가능하도록 권한 설정

# umask 0077
→ 새 파일은 -rw-------, 새 디렉터리는 drwx------ 권한이 되도록 기본 권한 설정

# chgrp project /project
→ /project 디렉터리의 그룹 소유권을 project로 변경

# chmod 3770 /project
→ project 그룹 사용자만 접근 가능하게 하고,
→ setgid로 하위 파일의 그룹을 project로 유지하며,
→ sticky bit로 소유자만 삭제 가능하게 설정

# chmod 770 exam_dir
→ 소유자와 그룹은 모든 권한, 그 외 사용자는 권한 없음

# ln /project/lin.sh /backup/lin.sh
→ /project/lin.sh에 대한 하드 링크 생성

- 텍스트 변환 / 압축

# dd if=a.txt conv=ucase of=b.txt
→ a.txt의 내용을 대문자로 변환하여 b.txt에 저장
→ 2501 기출 기준 대표 답안

# tr 'a-z' 'A-Z' < a.txt > b.txt
→ a.txt의 내용을 대문자로 변환하여 b.txt에 저장
→ 가능한 대체 풀이

# dd if=a.txt of=b.txt conv=lcase
→ a.txt의 내용을 소문자로 변환하여 b.txt에 저장

# tar -xvjf linux.tar.bz2
→ linux.tar.bz2 파일을 해제

# tar -Jxvf linux.tar.xz
→ linux.tar.xz 파일을 해제

# tar -Jcvf data.tar.xz /data
→ /data 디렉터리를 xz 형식으로 묶어 압축

# tar -Jxvf data.tar.xz
→ data.tar.xz 파일을 해제

# tar -cvf archive.tar dir1
→ dir1을 archive.tar로 묶음

# tar -xvf archive.tar
→ archive.tar 해제

# tar -zcvf archive.tar.gz dir1
→ dir1을 gzip 형식으로 묶어 압축

# tar -zxvf archive.tar.gz
→ archive.tar.gz 해제

# tar -jcvf archive.tar.bz2 dir1
→ dir1을 bzip2 형식으로 묶어 압축

# tar -jxvf archive.tar.bz2
→ archive.tar.bz2 해제

옵션	의미	기억법
-c	create (새 아카이브 파일 만들기) Create
-x	extract (압축 해제)	eXtract
-v	verbose (진행상황 표시)	Verbose
-f	file (대상 파일 지정)	File
-t	list  (목록만 보기)	lisT

gzip	-z	tar -zcvf / tar -zxvf	.tar.gz 형식
bzip2	-j	tar -jcvf / tar -jxvf	.tar.bz2 형식
xz	-J	tar -Jcvf / tar -Jxvf	.tar.xz 형식

tar로 파일 묶기	tar -cvf archive.tar dir1	archive.tar 생성
gzip 압축 tar	tar -zcvf archive.tar.gz dir1	gzip 압축
bzip2 압축 tar	tar -jcvf archive.tar.bz2 dir1	bzip2 압축
xz 압축 tar	tar -Jcvf archive.tar.xz dir1	xz 압축
tar 해제	tar -xvf archive.tar	묶음 해제
gzip 해제 tar	tar -zxvf archive.tar.gz	gzip 해제
bzip2 해제 tar	tar -jxvf archive.tar.bz2	bzip2 해제
xz 해제 tar	tar -Jxvf archive.tar.xz	xz 해제

 
- 백업 명령 전체 지도 (핵심 구분표)

명령어 대상 형식 특징 복원 명령
tar 파일/디렉터리 tar [옵션] 가장 범용, 압축 가능 tar -xvf
cpio 파일 목록 기반 (find와 함께) find … find와 파이프( )로 사용
dump 파일시스템 단위 dump -0u -f XFS 외 ext계열 백업 restore -rf
xfsdump XFS 전용 파일시스템 xfsdump -f XFS 복원용 xfsrestore -f
rsync 디렉터리 간 동기화 rsync -av 증분 백업, 원격 가능 rsync -av (역방향)
dd 블록(디스크, 파티션) 단위 dd if= / of= “비트단위 전체 복사” dd of= / if=

- 문제 유형별 “딱 보면 감 오는 패턴”

표현 명령어 설명
전체 백업(파티션 /dev/sda3 → 파일) dd 블록단위 복사 → 디스크 이미지
파일시스템 백업(XFS) xfsdump/xfsrestore 파일시스템 단위 백업, XFS 전용
디렉터리 전체 백업 (예: /home) dump/restore 비XFS용 전체 백업
파일 백업 + 복원 + find와 파이프 cpio `find /path
디렉터리 동기화 / 원격 백업 rsync 증분 + 원격 + 진행상황
압축 파일 생성/해제(.tar/.tar.gz/.tar.xz) tar 아카빙 + 압축 지원

- 각 명령어별 백업 & 복원 세트 (암기용)
1. dd (디스크/파티션 이미지): 디스크나 파티션 전체를 비트 단위로 복사할 때 사용

  • 백업 dd if=/dev/sda3 of=backup.data
  • 복원 dd if=backup.data of=/dev/sda3
구분 의미
if input file (입력 장치/파일)
of output file (출력 장치/파일)
bs block size
count 블록 수

문제 키워드: “/dev/sda3 전체 백업”, “이미지 생성”, “파티션 단위”
정답 패턴:
① dd
② if=/dev/sda3 of=backup.data (또는 if=/dev/sda3 of=backup.data bs=4k)


 2. tar (일반 파일/디렉터리 압축 백업)

목적 명령어 비고
묶기만 tar -cvf backup.tar /home 압축 없음
gzip 압축 tar -zcvf backup.tar.gz /home 빠름
xz 압축 tar -Jcvf backup.tar.xz /home 압축률 높음
복원 tar -xvf backup.tar
tar -zxvf backup.tar.gz
tar -Jxvf backup.tar.xz
압축방식에 맞는 옵션 사용

옵션 의미
-c create (생성)
-x extract (해제)
-v verbose (자세히 출력)
-f file (파일 이름 지정)
-z gzip 압축
-J xz 압축

문제 키워드: “디렉터리를 하나의 파일로 묶어서 백업”, “압축”, “tar.xz”
정답 패턴:
① tar
② cvf / xvf / Jcvf / Jxvf 등


3. cpio (파일 목록 기반 백업)

  • 백업 find /home/user -print | cpio -ov > backup.cpio 
  • 복원 cpio -id < backup.cpio

옵션 의미
-o output (백업)
-i input (복원)
-v verbose
-d 디렉터리 생성

 문제 키워드: “find 명령과 함께”, “파이프(|)”, “> backup.cpio”
 정답 패턴:
① cpio
② -ov
③ -id


4. dump / restore (파일시스템 전체 백업)

  • 백업 dump -0u -f home.xdump /home
  • 복원 restore -rf home.xdump
옵션 의미
-0 0단계(전체 백업)
-u 백업 기록 갱신
-f 파일 지정
-r 복원
-v 자세히 출력

문제 키워드: “파일시스템 백업”, “/home 전체 백업”, “restore 사용”
정답 패턴:
① dump
② -0u -f
③ restore
④ -rf


5. rsync (디렉터리 동기화/원격 백업)

  • 로컬 백업 rsync -av /data/backup /backup_dir
  • 원격 백업 rsync -avz root@192.168.5.13:/home /backup

옵션 의미
-a archive (속성 유지)
-v verbose
-z 압축 전송
-r recursive (하위 디렉토리 포함)

문제 키워드: “원격 백업”, “동기화”, “진행상황 출력”, “압축 전송”
정답 패턴:
① rsync
② -avz


■ 파일 시스템 생성 및 점검

# mkfs.xfs /dev/sdb1
→ XFS 파일 시스템 생성

# blkid
→ 장치의 UUID 확인

# xfs_repair /dev/sdb1
→ XFS 파일 시스템 점검

# fsck /dev/sdc1
→ EXT4 파일 시스템 점검

 명령어 실행 및 스케줄링
- 명령어 이력 및 NICE 우선순위

# history 10
→ 최근 10개의 명령 이력 출력

# nice
→ 현재 셸의 우선순위(NI 값) 출력

# nice -n -39 bash
→ 우선순위가 매우 높은 프로세스로 bash 실행

# renice -n -20 -p 1222
→ PID 1222 프로세스의 우선순위 변경 (-20은 최고)

- 크론(cron) 관리

# crontab -e -u ihduser
→ 특정 사용자의 크론 작업 편집

# crontab -l
→ 현재 사용자의 크론 목록 확인

# crontab -r -u ihduser
→ 특정 사용자의 모든 크론 작업 삭제

# rm /var/spool/cron/ihduser
→ 사용자별 크론 파일 직접 삭제

# 0 * * * * /path/to/command
→ 매시간 정각에 실행

# 1 3 1,4,5 * * /path/to/command
→ 매월 1,4,5일 새벽 3시 1분 실행

# 10 4 1 1-12/2 * /home/ihduser/work.sh
→ 1월~12월 사이 2개월 간격으로 1일 4시 10분 실행

# */10 * * * 0 /etc/heartbeat.sh
→ 매주 일요일, 10분 간격 실행

 
 패키지 관리 (RPM / YUM)
- RPM (Red Hat Package Manager)

# rpm -ivh httpd.rpm
→ httpd 패키지 설치 (i: install, v: verbose, h: 진행 표시)

# rpm -e httpd
→ httpd 패키지 제거 (--erase와 동일)

# rpm -qa | grep httpd
→ 설치된 패키지 목록 중 httpd 검색

# rpm -ql httpd
→ httpd 패키지의 설치 경로 목록 확인

# rpm -qf /etc/httpd/conf/httpd.conf
→ 특정 파일이 어떤 패키지에 포함되어 있는지 확인

# rpm -qc httpd
→ 해당 패키지의 설정 파일 목록 조회

# rpm -qR httpd
→ 패키지 의존성(Requires) 확인

# rpm -V httpd
→ 패키지 무결성 검증 (파일 변경 여부 확인)

# rpm -qlp package.rpm
→ 설치하지 않은 .rpm 파일의 내부 목록 확인

 

커널 및 모듈 관리
-  커널 컴파일 순서

# make mrproper
→ 기존 설정 및 오브젝트 완전 제거 (.config 포함)

# make clean
→ 이전 빌드 중 생성된 오브젝트 파일만 제거 (설정 유지)

# make menuconfig
→ 텍스트 기반 커널 설정 메뉴 실행

# make bzImage
→ 압축된 커널 이미지 생성

# make modules
→ 커널 모듈 컴파일

# make modules_install
→ 컴파일된 모듈 설치

# uname -r
→ 현재 커널 버전 확인

- 커널 모듈 관리

# lsmod
→ 현재 로드된 커널 모듈 목록 출력

# modprobe usb_storage
→ usb_storage 모듈 로드

# modprobe -r usb_storage
→ usb_storage 모듈 언로드(제거)

# depmod -a
→ 모듈 의존성 데이터베이스 갱신 (modules.dep 생성)

# modinfo e1000
→ e1000 모듈의 상세 정보 확인

# cat /lib/modules/$(uname -r)/modules.dep
→ 커널 모듈 의존성 파일 확인

- 자주 출제 조합

# lsmod                 → 로드된 모듈 목록
# modprobe -r 모듈명     → 모듈 제거
# modprobe 모듈명        → 모듈 추가
# depmod -a             → 의존성 갱신
# uname -r              → 커널 버전 출력

LVM 및 RAID
- LVM 구성 기본 단계

# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
→ 물리 볼륨(Physical Volume) 생성

# vgcreate lvm0 /dev/sdb1 /dev/sdc1
→ 볼륨 그룹(Volume Group) lvm0 생성

# lvcreate -L 6G -n ldata1 lvm0
→ 논리 볼륨(Logical Volume) 생성 (-L 크기, -n 이름)

# vgextend lvm0 /dev/sdd1
→ 기존 볼륨 그룹에 새 물리 볼륨 추가

- LVM 상태 확인

# pvscan
→ 시스템 내 모든 물리 볼륨 스캔

# vgscan
→ 볼륨 그룹 스캔

# lvscan
→ 논리 볼륨 스캔

# vgdisplay
→ 볼륨 그룹 상세 정보 확인

# lvdisplay
→ 논리 볼륨 상세 정보 확인

- 논리 볼륨 제거

# lvremove /dev/lvm0/ldata1
→ 논리 볼륨 삭제

# vgremove lvm0
→ 볼륨 그룹 삭제

# pvremove /dev/sdb1
→ 물리 볼륨 초기화 및 제거

- RAID (mdadm 기반)
RAID 상태 확인

# cat /proc/mdstat
→ 현재 RAID 배열 상태 확인

 
RAID 5 생성 (3개 디스크)

# mdadm --create /dev/md2 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
→ RAID5 구성 (패리티 기반)

 
RAID 상태 점검 및 관리

# mdadm --detail /dev/md2
→ RAID 상세 정보 확인

# mdadm --stop /dev/md2
→ RAID 배열 중지

# mdadm /dev/md2 --fail /dev/sdb1
→ 디스크 오류로 표시

# mdadm /dev/md2 --remove /dev/sdb1
→ 장애 디스크 제거

 
RAID 주요 레벨 요약

RAID 레벨  특징 용도
RAID0 스트라이핑, 빠르지만 복구 불가 성능 우선
RAID1 미러링, 안정성 높음 중요 데이터
RAID5 패리티, 성능+복구 균형 일반 서버
RAID10 RAID0+1 복합 고성능+고안정

 
로그 및 시스템 관리
- 주요 로그 파일

/var/log/messages    → 시스템 기본 로그 (커널/서비스)
/var/log/secure      → 로그인, 인증 관련 (ssh, sudo, su)
/var/log/cron        → cron 스케줄 로그
/var/log/maillog     → 메일 관련 로그
/var/log/wtmp        → 로그인/로그아웃 기록 (last 명령 참조)
/var/log/btmp        → 로그인 실패 기록 (lastb 명령 참조)
/var/log/dmesg       → 부팅 시 커널 메시지

로그 파일	내용	주요 서비스
/var/log/messages	시스템 전반, 커널, 서비스, cron 등	기본 로그(가장 중요)
/var/log/secure	인증 관련 로그 (su, ssh, sudo 등)	보안/인증
/var/log/maillog	메일 송수신 기록	mail 등
/var/log/cron	crond 작업 관련 로그	예약 작업
/var/log/dmesg	부팅 시 커널 메시지	하드웨어 감지
/var/log/wtmp	로그인/로그아웃 이력	last 명령
/var/log/btmp	로그인 실패 이력	lastb 명령
/var/log/faillog	사용자별 로그인 실패 요약	faillog 명령

성공 로그인 기록	last	/var/log/wtmp	정상 로그인·로그아웃 기록
실패 로그인 기록 (상세)	lastb	/var/log/btmp	실패한 로그인 시도 (IP 포함)
실패 로그인 기록 (요약)	faillog	/var/log/faillog	사용자별 누적 실패 횟수
시스템 로그 기록	logger	/var/log/messages	시스템 로그 테스트용 메시지
시스템 전반 로그 확인	(명령 없음)	/var/log/messages	커널/서비스 공용 로그 파일

 


- rsyslog 설정 (로그 규칙)

# vi /etc/rsyslog.conf
→ facility.level  action 형식으로 설정

# mail.warn /var/log/mailwarn.log
→ 메일 시스템의 warn 이상 로그 기록

# authpriv.* /var/log/auth.log
→ 인증 및 권한 관련 모든 로그 기록

# *.emerg /var/log/emergency.log
→ 모든 서비스의 emerg(긴급) 로그 저장

# *.emerg *
→ 모든 사용자 터미널에 출력

# mail,cron.* /var/log/mailcron.log
→ 메일 + cron 로그 함께 저장

# *.=crit;kern.none @@192.168.5.13
→ crit 레벨 이상 로그를 원격 서버(192.168.5.13)에 TCP로 전송

 
 “@” = UDP / “@@” = TCP 전송
.= : 특정 레벨만 / .!= : 특정 레벨 제외


- 로그 확인 명령

# tail -f /var/log/secure
→ 실시간 로그 확인

# last
→ 부팅 이후 로그인 기록 (wtmp 참조)

# lastb
→ 로그인 실패 기록 (btmp 참조)

# last root
→ root 사용자 로그인 기록만 확인

# lastlog
→ 사용자별 마지막 로그인 정보 확인

# dmesg
→ 커널 부팅 메시지 확인

로그 파일	내용	주요 서비스
/var/log/messages	시스템 전반, 커널, 서비스, cron 등	기본 로그(가장 중요)
/var/log/secure	인증 관련 로그 (su, ssh, sudo 등)	보안/인증
/var/log/maillog	메일 송수신 기록	mail 등
/var/log/cron	crond 작업 관련 로그	예약 작업
/var/log/dmesg	부팅 시 커널 메시지	하드웨어 감지
/var/log/wtmp	로그인/로그아웃 이력	last 명령
/var/log/btmp	로그인 실패 이력	lastb 명령
/var/log/faillog	사용자별 로그인 실패 요약	faillog 명령

성공 로그인 기록	last	/var/log/wtmp	정상 로그인·로그아웃 기록
실패 로그인 기록 (상세)	lastb	/var/log/btmp	실패한 로그인 시도 (IP 포함)
실패 로그인 기록 (요약)	faillog	/var/log/faillog	사용자별 누적 실패 횟수
시스템 로그 기록	logger	/var/log/messages	시스템 로그 테스트용 메시지
시스템 전반 로그 확인	(명령 없음)	/var/log/messages	커널/서비스 공용 로그 파일

- logrotate 설정

# vi /etc/logrotate.conf
→ 로그 순환 정책 설정

/var/log/btmp {
    weekly
    minsize 1M
    rotate 5
    create 0600 root utmp
}

weekly : 매주 순환
rotate 5 : 5개까지 보관
minsize : 최소 용량 지정


- SELinux 제어

# getenforce
→ 현재 SELinux 상태 확인 (Enforcing/Permissive/Disabled)

# setenforce 0
→ 임시 비활성화

# setenforce 1
→ 다시 활성화

네트워크 서비스 (Apache ~ iptables / firewalld)
- Apache (웹 서버)

# vi /usr/local/apache/conf/httpd.conf
→ 주요 설정 파일

Listen 8080
ServerName www.example.com:8080
ServerAdmin admin@example.com
DocumentRoot "/usr/local/apache/htdocs"
LoadModule userdir_module modules/mod_userdir.so
Include conf/extra/httpd-userdir.conf
UserDir public_html

 
- 사용자 인증 (.htaccess)

AuthType Basic
AuthName None
AuthUserFile /etc/httpd/.htpasswd
Require valid-user

 
- 설정 확인 및 서비스 재시작

# /usr/local/apache/bin/httpd -t
→ 설정 파일 문법 검사

# /usr/local/apache/bin/apachectl restart
→ Apache 재시작

 
- 인증 사용자 등록

# htpasswd -c /etc/httpd/.htpasswd ihduser
→ 최초 사용자 등록 (-c: 새 파일 생성)

# htpasswd /etc/httpd/.htpasswd kaituser
→ 사용자 추가

Samba (파일 공유)

# vi /etc/samba/smb.conf

[web]
comment = Web Directory Share
path = /var/www/html
valid users = user1
write list = user1

 
- 서비스 제어

# smbpasswd -a user1
→ Samba 계정 등록

# testparm
→ 설정 문법 확인

# systemctl restart smb
→ Samba 재시작

NFS (네트워크 파일 시스템)

# vi /etc/exports
/shared_data 192.168.12.0/24(rw,no_root_squash)

 

주요 옵션 옵션 의미
rw 읽기/쓰기 허용
ro 읽기 전용
no_root_squash 클라이언트 root → 서버에서도 root
root_squash 클라이언트 root → nobody
all_squash 모든 사용자 → nobody

 

# exportfs -a
→ 모든 공유 디렉터리 적용

# systemctl restart nfs
→ NFS 재시작

■ Sendmail (메일 서버)

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
→ 설정 파일 재생성

# vi /etc/mail/access
192.168.12.22   DISCARD
→ 접근 차단 설정

# makemap hash /etc/mail/access < /etc/mail/access
→ 접근 제어 DB 생성

# vi /home/ihduser/.forward
→ 메일 포워딩 설정

# newaliases
→ 별칭 갱신

DNS (BIND)

# vi /etc/named.conf
zone "ihd.or.kr" IN {
    type master;
    file "ihd.zone";
};

zone "5.168.192.in-addr.arpa" IN {
    type master;
    file "ihd.rev";
};

 
- zone 파일 예시

@   IN SOA ns1.ihd.or.kr. admin.ihd.or.kr. (
        0 1D 1H 1W 3H )
    IN NS ns1.ihd.or.kr.
15  IN PTR www.ihd.or.kr.

 
- 기타 옵션

allow-recursion { any; };
allow-transfer { any; };
forward only;
forwarders { 8.8.8.8; 8.8.4.4; };
allow-query { 203.247.60.0/24; };
# systemctl restart named
→ DNS 재시작

DHCP (IP 자동할당)

# vi /etc/dhcp/dhcpd.conf
subnet 192.168.12.0 netmask 255.255.255.0 {
  range 192.168.12.100 192.168.12.200;
  option routers 192.168.12.1;
  option domain-name-servers 192.168.5.13;
  option domain-name "kait.or.kr";
  option broadcast-address 192.168.12.255;
  default-lease-time 7200;
  max-lease-time 14400;
}
# systemctl restart dhcpd
→ DHCP 재시작

vsftpd (FTP 서버)

# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

 
- 파일 의미

/etc/vsftpd/ftpusers 접속 차단 사용자 목록
/etc/vsftpd/user_list 접속 허용 사용자 목록
# systemctl restart vsftpd
→ FTP 재시작

Squid (프록시 서버)

# vi /etc/squid/squid.conf
http_port 8080
acl hacker dstdomain .hacker.com
http_access deny hacker
http_access allow all
# systemctl restart squid
→ Squid 재시작

iptables (방화벽)

# iptables -P INPUT ACCEPT
→ INPUT 기본 정책 허용

# iptables -F INPUT
→ INPUT 체인 규칙 초기화

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
→ SSH 허용

# iptables -A INPUT -s 192.168.4.14 -j DROP
→ 특정 IP 차단

# iptables -A INPUT -p tcp --dport 20:30 -j DROP
→ 포트 범위 차단

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
→ NAT 변환 설정
# iptables -t nat -L PREROUTING
→ NAT PREROUTING 규칙 확인

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.247.60.10
→ 내부 → 외부 통신 시 출발지 IP를 203.247.60.10으로 변환 (SNAT)

# iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.12.10:80
→ 외부 8080 포트 접근 시 내부 192.168.12.10:80으로 전달 (DNAT)

SNAT: 내부 → 외부 주소 변환
DNAT: 외부 → 내부 포워딩

 
■ iptables의 3대 테이블 구분 (무조건 암기)
- 테이블주요 체인용도대표 예시

filter
(기본)
INPUT, OUTPUT, FORWARD 패킷 허용/차단
(방화벽 본체)
iptables -A INPUT -j DROP
nat PREROUTING, POSTROUTING 주소 변환
(NAT, SNAT, DNAT)
iptables -t nat -A POSTROUTING -j MASQUERADE
mangle 전용 체인 패킷 수정(TOS 등) 고급 설정

 
 iptables 주요 옵션 구조
- iptables [테이블] [옵션] [체인] [조건] [동작]

-F Flush (규칙 전부 삭제)
-P Policy (기본 정책 설정)
-A Append (새 규칙 추가)
-D Delete (규칙 삭제)
-L List (규칙 목록 출력)
-s Source (출발지 IP 지정)
-d Destination (목적지 IP 지정)
-j Jump (동작: ACCEPT, DROP, REJECT 등)
-p Protocol (tcp, udp 등 지정)
--dport 목적지 포트 (22, 80 등)
-i 입력 인터페이스 (eth0 등)
-o 출력 인터페이스 (eth0 등)

 
- 암기 팁 — “F·P·A·S·J 공식”

F Flush (초기화) iptables -F
P Policy (기본정책) iptables -P INPUT DROP
A Append (추가) iptables -A INPUT
S Source (출발지) -s 192.168.5.13
J Jump (동작) -j ACCEPT

iptables  예문 25문제
1. 외부에서 TCP 22번 포트(SSH)로 접근하는 트래픽을 허용하시오.
정답: iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

2. 내부 IP(192.168.10.0/24)에서 외부로 나갈 때, 출발지 주소를 공인 IP 203.0.113.10으로 변경하시오.
정답: iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --so-source 203.0.113.10

3. 192.168.4.14 IP에서 들어오는 모든 트래픽을 차단하시오.
정답: iptables -A INPUT -s 192.168.4.14 -j DROP

4. 외부에서 TCP 80번 포트로 접근할 때, 내부 웹서버(192.168.100.50)의 80번 포트로 전달하시오.
정답: iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.100.50

5. 모든 ping(icmp echo-request)을 차단하시오.
정답: iptables -A INPUT -p icmp -j DROP

6. 동적 IP 환경(DHCP)에서 NAT를 설정하여 외부망으로 나갈 수 있도록 하시오.
정답: iptables -t nat -A POSTROUTING -j MASQUERADE

7. 서버에 도달한 트래픽 중, TCP 20~30번 포트 범위는 전부 차단하시오.
정답: iptables -A INPUT -p tcp --dport 20:30 -j DROP

8. 출발지 주소가 192.168.1.5인 패킷을 로그에 기록하시오.
정답: 

9. 외부에서 들어오는 8080 포트 요청을 내부 192.168.1.100:80 으로 전달하시오.
정답: iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

10. 웹서버(80포트) 요청은 허용하되, 나머지 트래픽은 기본적으로 차단하시오.
정답: iptables -P INPUT DROP
정답: iptables -A INPUT -p tcp --dport 80 -j ACCEPT

11. INPUT 체인의 기본 정책을 DROP으로 설정하는 명령어이다.
iptables ( ① ) ( ② ) ( ③ )
정답: iptables -P INPUT DROP

12.INPUT 체인에 등록된 모든 규칙을 초기화(삭제)하는 명령어이다.
iptables ( ① ) ( ② )
정답: iptables -F INPUT;

13.192.168.5.13에서 들어오는 모든 패킷을 차단하는 규칙을 추가한다.
iptables ( ① ) ( ② ) ( ③ ) ( ④ )
정답: iptables -A INPUT -s 192.168.5.13 -j DROP

14. SSH(22/tcp) 포트에 대한 접근만 허용하는 규칙을 추가한다.
iptables ( ① ) ( ② ) ( ③ ) ( ④ ) ( ⑤ )
정답: iptables -A INPUT -p tcp --dport 22 -j ACCEPT

15. TCP 80포트(HTTP)에 대한 접근을 허용하고, 나머지는 거부하도록 설정한다.
iptables ( ① ) ( ② )
iptables ( ③ ) ( ④ ) ( ⑤ )
정답:iptables -P INPUT DROP / iptables -A INPUT -p tcp --dport 80 -j ACCEPT

16.현재 시스템의 모든 체인 규칙을 자세히(패킷 수, 바이트 포함) 출력한다.
iptables ( ① )
정답: iptables -vL

17.모든 ICMP(ping) 요청을 차단하는 규칙을 추가한다.
iptables ( ① ) ( ② ) ( ③ )
정답: iptables -A INPUT -p icmp -j DROP

18.기본 테이블인 filter의 모든 체인에 설정된 정책 정보를 번호와 함께 출력한다.
iptables ( ① )
정답: iptables -nL --line-numbers

19.nat 테이블의 PREROUTING 체인에 등록된 모든 규칙을 확인한다.
iptables ( ① )
정답: iptables -t nat -L PREROUTING

20.nat 테이블의 POSTROUTING 체인에 설정된 모든 규칙을 초기화한다.
iptables ( ① )
정답: iptables -t nat -F POSTROUTING

21.외부에서 TCP 8080포트로 들어오는 트래픽을 내부의 192.168.10.50 서버의 80포트로 전달한다.
iptables ( ① ) ( ② ) ( ③ ) ( ④ ) ( ⑤ )
정답: iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.10.50:80

22.내부망(192.168.0.0/24)의 출발지 주소를 공인 IP 203.0.113.10으로 변환하여 외부로 전송한다.
iptables ( ① ) ( ② ) ( ③ ) ( ④ ) ( ⑤ )
정답: iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 203.0.113.10

23.공인 IP가 DHCP로 할당된 환경에서 NAT를 설정한다.
iptables ( ① ) ( ② ) ( ③ ) ( ④ )
정답: iptables -t nat -A POSTROUTING -j MASQUERADE

24.현재 등록된 모든 iptables 규칙을 삭제하고, INPUT/OUTPUT/FORWARD 기본 정책을 DROP으로 변경한다.
iptables ( ① )
iptables ( ② )
iptables ( ③ )
iptables ( ④ )
정답: iptables -F / iptables -P INPUT DROP / iptables -P OUTPUT DROP / iptables -P FORWARD DROP/

25.iptables에서 규칙을 저장하고, 다음 부팅 시 자동으로 적용되도록 설정한다.
( ① )
정답: iptables-save


 
- firewalld

# systemctl start firewalld
→ firewalld 서비스 시작

# firewall-cmd --state
→ 현재 상태 확인 (running / not running)

# firewall-cmd --zone=public --add-service=http
→ HTTP 서비스 임시 허용

# firewall-cmd --permanent --zone=public --add-service=http
→ HTTP 서비스 영구 허용

# firewall-cmd --permanent --zone=public --add-port=8080/tcp
→ 8080 포트 영구 개방

# firewall-cmd --reload
→ 설정 반영

# firewall-cmd --list-all
→ 현재 영역(zone)의 서비스·포트·규칙 확인

- SELinux (보강)

# getenforce
→ 현재 SELinux 상태 확인 (Enforcing / Permissive / Disabled)

# setenforce 0
→ 일시적으로 비활성화

# chcon -t httpd_sys_content_t /usr/local/apache/htdocs -R
→ Apache 접근 가능한 컨텍스트로 임시 변경

# semanage fcontext -a -t httpd_sys_content_t "/usr/local/apache(/.*)?"
→ Apache 경로를 영구 정책으로 등록

# restorecon -Rv /usr/local/apache
→ 기본 SELinux 컨텍스트 복원

 
■ DNF (YUM 대체 패키지 관리자)
- 저장소 설정

# dnf repolist
→ 활성화된 저장소 목록 확인

# dnf repolist all
→ 전체 저장소(활성+비활성) 확인

# dnf config-manager --add-repo=http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/
→ 새 저장소 추가 (repo URL 등록)

# vi /etc/yum.repos.d/custom.repo
→ 사용자 정의 저장소 생성

 
- custom.repo 예시

[customrepo]
name=Custom Repository
baseurl=http://192.168.0.10/repo
enabled=1
gpgcheck=0

 
- 패키지 관리 명령

# dnf search httpd
→ 패키지 검색

# dnf info httpd
→ 패키지 정보 조회

# dnf install httpd
→ 패키지 설치

# dnf remove httpd
→ 패키지 제거

# dnf clean all
→ 캐시 정리

# dnf makecache
→ 메타데이터 캐시 재생성
  • dnf는 yum 완전 대체 명령으로 Rocky Linux, RHEL 8 이상 기본 채택

■ SSH 키 생성 및 복사
- SSH 공개키 기반 로그인 설정

# ssh-keygen -t rsa
→ RSA 방식의 공개키/개인키 생성 (~/.ssh/id_rsa, id_rsa.pub)

# ssh-copy-id user@192.168.10.20
→ 생성한 공개키를 원격 서버에 복사 (비밀번호 입력 1회 필요)

# ssh user@192.168.10.20
→ 이후 비밀번호 없이 SSH 접속 가능

ssh-keygen                      # SSH 키 생성
ssh-copy-id root@192.168.x.x    # 공개키 원격서버에 복사
ssh root@192.168.x.x            # 비밀번호 없이 SSH 접속
vi /etc/ssh/sshd_config         # SSH 설정 확인/수정
systemctl restart sshd          # SSH 서비스 재시작

 
- 수동 복사 방식 (대체문)

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
→ 직접 authorized_keys에 공개키 추가

 
시험 포인트

  • ssh-keygen과 ssh-copy-id 한 세트로 출제됨
  • .ssh/authorized_keys 파일 권한 600으로 맞춰야 정상 로그인 가능
  • Permission denied (publickey) 오류는 파일 권한 문제로 자주 출제됨

■ LVM 구성 실습형 (출제빈도 높음)
- LVM 생성 전체 흐름

# fdisk /dev/sdb
→ 파티션 생성 (8e 타입으로 설정, Linux LVM)

# pvcreate /dev/sdb1 /dev/sdc1
→ 물리 볼륨(Physical Volume) 생성

# vgcreate vgdata /dev/sdb1 /dev/sdc1
→ 볼륨 그룹(Volume Group) 생성

# lvcreate -L 5G -n lvbackup vgdata
→ 논리 볼륨(Logical Volume) 생성 (크기 5GB)

# mkfs.xfs /dev/vgdata/lvbackup
→ XFS 파일시스템 생성

# mkdir /backup
# mount /dev/vgdata/lvbackup /backup
→ 마운트

# df -h
→ 확인

 
- 확장 및 축소

# lvextend -L +2G /dev/vgdata/lvbackup
→ 논리 볼륨 크기 확장

# resize2fs /dev/vgdata/lvbackup
→ 파일시스템 확장 (ext4)

# xfs_growfs /backup
→ 파일시스템 확장 (XFS 전용)

 
- LVM 스캔/삭제

# pvscan / vgscan / lvscan
→ LVM 구성 요소 확인

# lvremove /dev/vgdata/lvbackup
# vgremove vgdata
# pvremove /dev/sdb1
→ LVM 제거

 
시험 포인트

  • pvcreate → vgcreate → lvcreate 순서를 정확히 기억.
  • XFS 사용 시 xfs_growfs로 확장 (resize2fs 아님).
  • /etc/fstab 등록 문제로 연결될 수 있음.

■ xfsdump / xfsrestore (실기 자주 출제)
- XFS 전용 백업

# xfsdump -f /backup/xfsdump1.dump /dev/sdb1
→ /dev/sdb1 파티션을 /backup/xfsdump1.dump 파일로 백업

# xfsrestore -f /backup/xfsdump1.dump /restore
→ 백업 파일을 /restore 디렉터리에 복원

 
- 테이프 장치 백업 예시

# xfsdump -f /dev/st0 /dev/sda1
→ /dev/sda1을 테이프 장치(/dev/st0)에 백업

# xfsrestore -f /dev/st0 /mnt/recover
→ 테이프에 백업된 내용을 복원

 
시험 포인트

  • xfsdump은 XFS 전용 백업 도구 (EXT 계열엔 사용 불가)
  • dump / restore 대비 '장치 또는 파일 지정 방식' 차이를 구분해야 함
  • 복원 시 대상 디렉터리는 비어 있어야 함 (mkdir /restore 후 실행)

항목 핵심 명령어 실기 출제 포인트

dnf repo dnf config-manager --add-repo 사용자 저장소 등록 및 repo 구조
ssh-keygen / ssh-copy-id 키 생성, 원격 복사 비밀번호 없는 SSH 접속 구성
LVM 구성 pvcreate → vgcreate → lvcreate 순서 + XFS 확장 (xfs_growfs)
xfsdump / xfsrestore xfsdump -f, xfsrestore -f XFS 전용 백업 및 복원

 
 
의미 매개변수 값

ping 응답 차단 net.ipv4.icmp_echo_ignore_all 1
라우팅 허용 net.ipv4.ip_forward 1
SYN Flood 방지 net.ipv4.tcp_syncookies 1
소켓 재사용 허용 net.ipv4.tcp_tw_reuse 1