LabHub

LFCS — 리눅스 재단 시스템 관리자 · 모의고사 · 실습

LFCS 모의고사 A

LabHub 에서 이어서 보기

목표

실제 LFCS 시험과 같은 조건에서 과제 18개를 120분 안에 풉니다. 합격선은 67% 이고
부분 점수제이므로, 18개 중 13개를 통과하면 합격입니다.

실제 시험 환경

이 모의고사를 푸는 방법

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 -asystemctl 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/hosts10.60.0.11web1.lab.internal 과 짧은 이름 web1 로,
10.60.0.12db1.lab.internal 과 짧은 이름 db1 로 등록하십시오. 그리고
/etc/nsswitch.confhosts: 줄에서 filesdns 보다 앞에 오도록
하십시오. 네 이름이 모두 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 이 있어야 하고 WantsAfter 가 모두
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. 패키지 figletpv 를 설치하십시오(이 환경은 인터넷이 없고
/opt/localrepo 오프라인 저장소가 이미 등록돼 있습니다). 설치된 두 패키지의
이름과 버전을 /root/exam/ops/pkg.txt 에 한 줄에 하나씩
<패키지 이름> <버전> 형식으로 적으십시오. 마지막으로 pv 만 자동 업그레이드
대상에서 제외되도록 잠그십시오.

참고

단계 18개

  1. find 로 크기·링크 조건에 맞는 파일 고르기
  2. /etc/services 에서 조건에 맞는 항목 추리기
  3. 특정 확장자를 제외한 tar 아카이브 만들기
  4. 그룹·사용자 생성과 암호 만료 정책
  5. 로그인 차단 계정과 기본 암호 정책
  6. fstab 항목 두 개 작성하기
  7. 파일 위에 ext4 만들고 슈퍼블록 읽기
  8. 희소 파일과 실제 점유 크기 보고
  9. setgid 공유 디렉터리와 기본 ACL
  10. 정적 이름 해석과 해석 순서
  11. SSH 서버 설정과 최종 값 확인
  12. 포트를 여는 프로세스 찾아내기
  13. 현재 인터페이스와 경로 읽어 적기
  14. systemd 유닛 파일 작성과 활성화 링크
  15. cron.d 항목과 root crontab
  16. 로그 회전 설정 작성
  17. 우선순위를 낮춘 백그라운드 작업과 PID 파일
  18. 패키지 설치와 업그레이드 잠금