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 = 실행 파일을 소유자 권한으로 실행
주요 경로 모음
- /etc/passwd - 사용자 계정 정보 파일
- /etc/shadow - 사용자 암호 정보 파일
- /etc/group - 그룹 정보 파일
- /etc/gshadow - 그룹 암호 정보 파일
- /etc/skel - 사용자 홈 기본 파일 위치
- /etc/login.defs - 로그인/비밀번호 정책 파일
- /etc/default/useradd - useradd 기본 설정 파일
- /etc/fstab - 파일시스템 마운트 및 쿼터 설정 파일
- /etc/crontab - 시스템 크론 작업 설정 파일
- /etc/exports - NFS 공유 설정 파일
- /etc/samba/smb.conf - Samba 설정 파일
- /etc/dhcp/dhcpd.conf - DHCP 설정 파일
- /etc/named.conf - DNS 기본 설정 파일
- /var/named/ - DNS 존(zone) 파일 디렉터리
- /etc/mail/sendmail.mc - Sendmail 매크로 설정 파일
- /etc/mail/access - 메일 접근 제어 파일
- /etc/mail/virtusertable - 가상 사용자 매핑 파일
- /etc/aliases - 메일 별칭(alias) 설정 파일
- /etc/httpd/conf/httpd.conf - Apache 메인 설정 파일
- /usr/local/apache/conf/extra/httpd-userdir.conf - Apache 사용자 디렉터리 설정 파일
- /usr/local/apache/conf/extra/httpd-vhosts.conf - Apache 가상호스트 설정 파일
- /etc/vsftpd/vsftpd.conf - FTP 서버 설정 파일
/etc/hosts.allow - TCP Wrapper 허용 목록/etc/hosts.deny - TCP Wrapper 차단 목록- /etc/rsyslog.conf - 시스템 로그 설정 파일
- /etc/logrotate.conf - 로그 로테이션 설정 파일
- /var/log/messages - 일반 시스템 로그
- /var/log/secure - 인증/보안 관련 로그
- /var/log/maillog - 메일 관련 로그
- /var/log/btmp - 로그인 실패 로그
- /var/log/wtmp - 로그인 성공 로그
- /etc/sysctl.conf - 커널 파라미터 설정 파일
- /proc/sys/fs/file-max - 열 수 있는 파일 최대값 설정
- /lib/modules/$(uname -r)/modules.dep - 커널 모듈 의존성 파일
- /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 |
'IT > 자격증' 카테고리의 다른 글
| 2025년 2회 리눅스마스터 1급 2차 실기 후기 / 비전공 (0) | 2025.11.11 |
|---|---|
| 2025년 AWS SAA(AWS Certified Solutions Architect) 합격 후기 / 비전공 (0) | 2025.11.10 |
| AWS SAA 자격증 개념 총 정리 (0) | 2025.10.22 |
| 2025년 2회 리눅스마스터 1급 1차 필기 합격 후기 / 비전공 (0) | 2025.10.03 |
| 23년 2회차 정보처리기사 실기 합격 후기 / 비전공 (1) | 2025.09.26 |