LFCS — 리눅스 재단 시스템 관리자 · 모의고사 · 실습
LFCS 모의고사 A
목표
실제 LFCS 시험과 같은 조건에서 과제 18개를 120분 안에 풉니다. 합격선은 67% 이고
부분 점수제이므로, 18개 중 13개를 통과하면 합격입니다.
실제 시험 환경
- 브라우저도 인터넷도 없습니다. 볼 수 있는 것은 터미널 안의
man페이지와 - 포트 8080, 4505, 4506 tcp 를 차단하면 안 되고,
certerminal프로세스를 - 합격선은 67% 이고 부분 점수제입니다. 한 과제에 매달려 시간을 다 쓰는 것이
--help, info, 그리고 /usr/share/doc/ 아래의 배포판 문서뿐입니다.
죽이면 시험 세션이 그 자리에서 끝납니다.
가장 흔한 탈락 이유입니다. 막히면 넘기고 나중에 돌아오십시오.
이 모의고사를 푸는 방법
1. 힌트를 보지 말고 먼저 끝까지 풀어 보십시오. 18개를 다 훑은 뒤에,
그때 막힌 것만 힌트를 여십시오.
2. 웹 검색을 하지 마십시오. man 과 --help 만으로 푸십시오. 이것이 이
시험에서 가장 중요한 연습입니다. 실제 시험장에서는 검색창이 없습니다.
3. 명령 이름이 기억나지 않으면 man -k <키워드> 또는 apropos <키워드> 로
찾으십시오. 예를 들어 man -k acl, man -k quota, man -k "file system"
처럼 씁니다. 지금 이 연습을 해 두지 않으면 시험장에서 처음 하게 됩니다.
4. 섹션 번호가 필요하면 man 5 fstab 처럼 씁니다. 설정 파일은 5절, 관리자
명령은 8절에 있습니다.
이 환경이 실제 시험과 다른 점
실습 파드는 커널 권한이 거의 없고 systemd 가 PID 1 로 돌지 않습니다. 그래서mount, systemctl, iptables 는 여기서 동작하지 않습니다. 같은 도메인의
지식을 이 환경에서 확인할 수 있는 형태로 바꾸어 출제했습니다. 실제 시험에서는
이 셋이 모두 동작하므로, 여기서 만든 fstab 항목과 유닛 파일은 시험장에서mount -a 와 systemctl enable --now 로 이어진다고 생각하십시오.
단계
1. /root/exam/find/src/ 에 data-01.txt부터 data-05.txt까지 다섯 파일을
만드십시오. data-01~data-03 은 각각 200000 바이트 이상, data-04~data-05
는 각각 1 바이트 이상 4096 바이트 미만입니다. data-01.txt 를 가리키는 하드
링크 data-01.hard 를 같은 디렉터리에 만드십시오. 그다음 src 바로 아래의
일반 파일 중 크기가 100 KiB 를 넘는 것들의 이름만 /root/exam/find/big.txt 에,
하드 링크 수가 2 이상인 것들의 이름만 /root/exam/find/links.txt 에 적으십시오.
두 파일 모두 이름만 한 줄에 하나씩, LC_ALL=C sort 순서로 적습니다.
2. /etc/services 에서 프로토콜이 tcp 이고 포트 번호가 1024 이상 2000 이하인
항목을 골라 /root/exam/text/tcp-high.txt 에 적으십시오. 한 줄에<포트> <서비스 이름> 을 공백 하나로 구분해 적고, 서비스 이름은 그 줄의 첫
번째 필드를 씁니다. 포트 번호 오름차순으로 정렬하고 똑같은 줄은 하나만 남깁니다.
3. /root/exam/arch/src/ 에 log-01.txt부터 log-05.txt까지 각각 20000 바이트
이상인 파일 다섯 개와 확장자가 .tmp 인 파일 하나를 만드십시오./root/exam/arch/ 에서 src 디렉터리를 gzip 으로 압축한 tar 아카이브/root/exam/arch/backup.tar.gz 를 만들되 .tmp 파일은 제외하십시오.
그 아카이브에 담긴 항목 목록을 LC_ALL=C sort 순서로/root/exam/arch/members.txt 에 적으십시오.
4. GID 4200 인 그룹 ops 와 GID 4201 인 그룹 audit 을 만드십시오. UID 4300 인
사용자 deploy 를 만들되 기본 그룹은 ops, 보조 그룹은 audit, 로그인 셸은/bin/bash, 홈은 /home/deploy 로 하고, 홈 디렉터리는 실제로 만들어 권한750, 소유 deploy:ops 로 두십시오. deploy 의 암호 정책은 최소 변경 간격
7일, 최대 사용 기간 60일, 만료 경고 14일로 하고 계정 만료일은 2027-06-30 으로
지정하십시오.
5. UID 4301 인 사용자 intern 을 만드십시오. 로그인 셸은 /usr/sbin/nologin,
홈은 실제로 만들고, 보조 그룹으로 ops 에 넣으십시오. intern 에 암호를 한 번
설정한 뒤 그 계정을 잠그십시오. 마지막으로 /etc/login.defs 의 기본값을PASS_MAX_DAYS 90, PASS_MIN_DAYS 7, PASS_WARN_AGE 14, UMASK 027 로
바꾸십시오.
6. 디렉터리 /srv/data 와 /srv/scratch 를 만들고 /etc/fstab 에 항목 두 개를
추가하십시오. 첫째는 장치를UUID=2f9c1a70-0007-4e00-9a00-000000000007, 마운트 지점 /srv/data, 종류ext4, 옵션 defaults,nofail, dump 0, pass 2 입니다. 둘째는 장치 tmpfs,
마운트 지점 /srv/scratch, 종류 tmpfs, 옵션rw,nosuid,nodev,noexec,size=256m, dump 0, pass 0 입니다. 이 파드에서는mount 를 실행할 수 없으니 항목 작성까지만 하십시오.
7. /root/exam/storage/data.img 를 정확히 134217728 바이트로 만들고 그 파일 위에
ext4 파일시스템을 만드십시오. 볼륨 라벨은 EXAMDATA, 예약 블록 비율은 1%
입니다. 만들어진 파일시스템의 UUID 를 /root/exam/storage/data.uuid 에 한 줄로
적으십시오.
8. /root/exam/storage/sparse.img 를 겉보기 크기 536870912 바이트인 희소 파일로
만드십시오(실제 점유는 거의 0 이어야 합니다). /root/exam/storage/dense.img 는
4 MiB 를 실제로 할당한 파일로 만드십시오. 그다음/root/exam/storage/usage.txt 에 아래 세 줄을 적으십시오. 값은 KiB 단위
정수입니다.sparse_apparent_kib=<sparse.img 의 겉보기 크기>sparse_actual_kib=<sparse.img 이 실제로 차지하는 크기>dense_actual_kib=<dense.img 이 실제로 차지하는 크기>
9. 공유 디렉터리 /srv/team 을 만들고 소유를 root:ops, 권한을 2770 으로
하십시오. ACL 로 deploy 에게 rwx, intern 에게 r-x 를 주고, 이 디렉터리
아래에 새로 만들어지는 파일이 소유 그룹에 rwx, 그 밖의 사용자에게 아무 권한도
갖지 않도록 기본 ACL 을 설정하십시오. 기본 ACL 의 소유자 항목은 rwx 입니다.
10. /etc/hosts 에 10.60.0.11 을 web1.lab.internal 과 짧은 이름 web1 로,10.60.0.12 를 db1.lab.internal 과 짧은 이름 db1 로 등록하십시오. 그리고/etc/nsswitch.conf 의 hosts: 줄에서 files 가 dns 보다 앞에 오도록
하십시오. 네 이름이 모두 getent hosts 로 해석되어야 합니다.
11. /etc/ssh/sshd_config.d/90-exam.conf 를 만들어 아래 일곱 가지를 이 파일에
적으십시오. PermitRootLogin no, PasswordAuthentication no,MaxAuthTries 3, ClientAliveInterval 300, ClientAliveCountMax 2,AllowTcpForwarding no, X11Forwarding no. 설정이 문법적으로 올바르고 sshd 가
해석한 최종 값이 이대로여야 합니다. 데몬을 다시 띄울 필요는 없습니다.
12. 127.0.0.1 의 TCP 9101 번 포트에서 연결을 받는 프로세스를 백그라운드로
띄우고 시험이 끝날 때까지 살려 두십시오. 그다음 그 소켓을 들고 있는 프로세스를
찾아 /root/exam/net/listener.txt 에 아래 세 줄을 적으십시오.port=9101, pid=<그 프로세스의 PID>, comm=<그 프로세스의 이름>
13. 이 파드의 현재 네트워크 상태를 조회해 /root/exam/net/facts.txt 에 네 줄로
적으십시오. iface=<기본 경로가 나가는 인터페이스 이름>,ipv4=<그 인터페이스의 IPv4 주소를 프리픽스까지 포함해>,mtu=<그 인터페이스의 MTU>, gateway=<기본 경로의 게이트웨이 주소>.
14. /usr/local/bin/labhub-batch.sh 를 만들어 실행 권한을 주고,/etc/systemd/system/labhub-batch.service 유닛 파일을 작성하십시오. [Unit]
에는 Description 이 있어야 하고 Wants 와 After 가 모두network-online.target 이어야 합니다. [Service] 의 Type 은 oneshot,
ExecStart 는 /usr/local/bin/labhub-batch.sh, WorkingDirectory 는/srv/data 입니다. [Install] 의 WantedBy 는 multi-user.target 입니다.
이 파드에는 systemd 가 PID 1 로 돌지 않아 systemctl enable 이 동작하지
않으므로, 그 명령이 만드는 심볼릭 링크/etc/systemd/system/multi-user.target.wants/labhub-batch.service 를 손으로
만드십시오.
15. /usr/local/bin/labhub-report.sh 와 /usr/local/bin/labhub-weekly.sh 를
만들고 둘 다 권한 755 로 두십시오. /etc/cron.d/labhub-report 를 만들어
15분마다 root 권한으로 /usr/local/bin/labhub-report.sh 를 실행하도록
등록하고, 그 파일의 권한은 644, 소유는 root:root 로 두십시오. 그리고
root 의 crontab 에 매주 일요일 02시 30분에/usr/local/bin/labhub-weekly.sh 를 실행하는 줄을 등록하십시오.
16. /var/log/labhub-app.log 를 만들고 /etc/logrotate.d/labhub-app 을 작성해
이 로그를 매일 회전하고 14개까지 보관하도록 하십시오. compress,delaycompress, missingok, notifempty 를 켜고, 회전 후 새 파일은create 0640 root adm 으로 만들어지게 하십시오.
17. /usr/local/bin/exam-worker.sh 를 만들어 권한 755 를 주십시오. 첫 줄은
셔뱅으로 시작해야 하고, 내용은 종료하지 않고 계속 도는 것이면 됩니다.
이것을 nice 값 15 로 백그라운드에서
실행하고, 그 프로세스의 PID 를 /run/exam-worker.pid 에 한 줄로 적으십시오.
프로세스는 채점 시점까지 살아 있어야 합니다.
18. 패키지 figlet 과 pv 를 설치하십시오(이 환경은 인터넷이 없고/opt/localrepo 오프라인 저장소가 이미 등록돼 있습니다). 설치된 두 패키지의
이름과 버전을 /root/exam/ops/pkg.txt 에 한 줄에 하나씩<패키지 이름> <버전> 형식으로 적으십시오. 마지막으로 pv 만 자동 업그레이드
대상에서 제외되도록 잠그십시오.
참고
- 시간을 재고 시작하십시오. 화면의 제한 시간이 120분으로 걸려 있습니다.
man -k가 아무것도 못 찾으면 색인이 없는 것입니다.apropos도 같은 색인을/etc/hosts는 파드가 바인드 마운트로 물고 있어서sed -i처럼 파일을 새로- 이 파드는
mount·umount·systemctl·iptables를 실행할 수 없습니다. 그 - 흔한 실수 하나 더 — 값을 파일에 적으라고 한 과제는 전부 채점기가 그 값을 지금
씁니다. 그럴 때는 <명령> --help 와 /usr/share/doc/<패키지>/ 를 보십시오.
만들어 바꿔치기하는 방식이 Device or resource busy 로 실패합니다. 덧붙이기
리다이렉션이나 tee -a 를 쓰십시오. 실제 서버에서도 컨테이너 안이면 같은 일이
일어납니다.
세 가지를 요구하는 과제는 없으니, 그 명령이 실패한다면 문제를 잘못 읽은 것입니다.
다시 계산해 대조합니다. 앞에서 만든 것을 나중에 고쳤다면 보고 파일도 다시
만드십시오.
단계 18개
- find 로 크기·링크 조건에 맞는 파일 고르기
- /etc/services 에서 조건에 맞는 항목 추리기
- 특정 확장자를 제외한 tar 아카이브 만들기
- 그룹·사용자 생성과 암호 만료 정책
- 로그인 차단 계정과 기본 암호 정책
- fstab 항목 두 개 작성하기
- 파일 위에 ext4 만들고 슈퍼블록 읽기
- 희소 파일과 실제 점유 크기 보고
- setgid 공유 디렉터리와 기본 ACL
- 정적 이름 해석과 해석 순서
- SSH 서버 설정과 최종 값 확인
- 포트를 여는 프로세스 찾아내기
- 현재 인터페이스와 경로 읽어 적기
- systemd 유닛 파일 작성과 활성화 링크
- cron.d 항목과 root crontab
- 로그 회전 설정 작성
- 우선순위를 낮춘 백그라운드 작업과 PID 파일
- 패키지 설치와 업그레이드 잠금