LFCS 실전 난이도 모의 A
짧고 명확한 12개 작업을 영어 원문, 한국어 핵심, 최소 가이드와 검증 기준으로 연습
공개된 실제·복원·기출 문제가 아니다. 공식 competency를 조합해 독자적으로 만든 모의 세트다. 실제 시험의 문제 수·배점·난이도를 보장하지 않는다.
작성·검증 상태: AI가 task·풀이 구조화를 보조했다. 공식 범위와 대조한 학습용 세트이며 12개 task 전체를 동일한 깨끗한 VM에서 연속 실행한 공개 검증 기록은 아직 없다.
진행 규칙
- 제한시간 75분, 문제당 평균 6분을 목표로 한다.
- 처음 4분 안에 시작하지 못하면 표시하고 다음 문제로 이동한다.
- 각 문제에서
현재 동작과영속성을 따로 확인한다. - 처음 풀 때는 하단의 접힌 채점용 답안을 열지 않는다. 종료 후 단계별 실전의 설명과 함께 오답을 복습한다.
- storage와 network 대상 이름은 문제 환경에서 제공된 값으로 치환한다.
문제 1 — kernel parameter
English
Set vm.swappiness to 20 immediately and persistently using /etc/sysctl.d/91-exam.conf. Do not modify unrelated kernel parameters.
한국어 핵심
지정 파일과 현재 kernel에 값 하나만 적용한다.
막힐 때: runtime, 지정 파일 -p, 전체 표준 경로 --system을 구분한다.
검증: sysctl vm.swappiness, 설정 파일 내용.
문제 2 — local account and shared directory
English
Create group release with GID 4910 and user builder with a home directory and Bash shell. Add the user to release and configure /srv/release as root:release mode 2770.
한국어 핵심
계정·보조 그룹·SGID 공유 디렉터리를 만든다.
검증: getent, id, stat, builder로 파일 생성.
문제 3 — ACL
English
Without adding reviewer to release, grant read and traverse access to /srv/release. New entries must inherit the access, but reviewer must not receive write permission.
한국어 핵심
그룹 가입 없이 access ACL과 default ACL을 적용한다.
검증: getfacl, 실제 사용자 test -r, test ! -w.
문제 4 — custom service
English
Create exam-wait.service that runs /usr/bin/sleep infinity as nobody, restarts 4 seconds after failure, and starts now and at multi-user boot.
한국어 핵심
[Service]의 사용자·실행·재시작 설정과 [Install]의 enable 대상을 구분한다.
검증: unit 문법, enabled, active, 실행 사용자, journal.
문제 5 — scheduled job
English
Run /usr/local/bin/cleanup-report.sh as user builder every day at 03:20 and append standard output and errors to /var/log/cleanup-report.log.
한국어 핵심
실행 사용자·시간·명령·출력 방향을 모두 맞춘다.
검증: 해당 사용자의 schedule 조회와 scheduler service 상태.
문제 6 — LVM and persistent mount
English
Using the provided empty disk, create VG vgexam, a 768 MiB LV lvlogs, an XFS filesystem, and mount it persistently at /var/examlogs using the filesystem UUID.
한국어 핵심
빈 장치 식별부터 UUID fstab과 실제 mount까지 완성한다.
검증: pvs, vgs, lvs, lsblk -f, findmnt --verify, findmnt /var/examlogs.
문제 7 — swap
English
Create and activate a persistent 256 MiB swap logical volume named lvswap in vgexam.
한국어 핵심
LV, swap signature, UUID fstab, 현재 활성화를 구분한다.
검증: swapon --show, blkid, findmnt --verify.
문제 8 — firewall
English
Allow TCP port 9090 in the active firewalld zone, persistently and immediately. Preserve all existing rules.
한국어 핵심
default가 아니라 active zone을 먼저 찾고 runtime·permanent를 일치시킨다.
검증: active zone의 runtime·permanent port 목록.
문제 9 — static route
English
Add a persistent route for 203.0.113.0/24 through the provided gateway on the specified NetworkManager connection. Do not replace existing routes.
한국어 핵심
기존 route를 보존하며 profile에 경로를 추가한다.
검증: connection profile, ip route, ip route get 203.0.113.10.
문제 10 — SSH server
English
Configure the SSH server to disallow direct root login while preserving the current administrator access. Validate the configuration before reloading the service.
한국어 핵심
drop-in 또는 주 설정에서 root 직접 로그인을 제한하고, 현재 접근 경로를 보존한다.
검증: sshd -t, sshd -T, 별도 session 로그인, journal.
문제 11 — SELinux file context
English
Allow the existing HTTP service to read /srv/examweb by configuring a persistent SELinux file context. Keep SELinux enforcing.
한국어 핵심
Unix permission을 무작정 풀거나 SELinux를 끄지 않고 persistent context를 설정한다.
검증: getenforce, ls -ldZ, restorecon 후 context 유지, 실제 HTTP 응답.
문제 12 — Git
English
In the provided repository, create branch fix/limit, commit only limits.conf, merge it into main, and leave debug.tmp untracked.
한국어 핵심
특정 파일만 stage·commit하고 branch를 병합한다.
검증: git status, git diff --cached, git log --oneline --graph.
종료 전 10분 검산
systemctl --failed
findmnt --verify
mount -a
swapon --show
ip route
ss -lntup
firewall-cmd --get-active-zones
| 결과 | 판단 |
|---|---|
| 10~12문제 완료, 검증 성공 | 실제 시험 대응권 |
| 8~9문제 완료 | 합격선 경쟁 가능, 약한 분야 재실습 |
| 6~7문제 완료 | 기본 작업 속도와 영속성 보완 필요 |
| 5문제 이하 | 종합 모의보다 단계별 실전부터 반복 |
이 평가는 개인 학습 기준이며 공식 배점이나 합격 가능성을 의미하지 않는다.
풀이 연결
채점용 답안
12문제 전체 답안 열기 — 제한시간 종료 후 확인
1. kernel parameter
printf 'vm.swappiness = 20\n' > /etc/sysctl.d/91-exam.conf
sysctl -p /etc/sysctl.d/91-exam.conf
sysctl vm.swappiness
2. local account and shared directory
groupadd -g 4910 release
useradd -m -s /bin/bash builder
usermod -aG release builder
install -d -o root -g release -m 2770 /srv/release
getent group release
id builder
stat -c '%A %a %U:%G %n' /srv/release
runuser -u builder -- touch /srv/release/builder.test
3. ACL
id reviewer >/dev/null 2>&1 || useradd -m reviewer
setfacl -m u:reviewer:rx /srv/release
setfacl -d -m u:reviewer:rx /srv/release
getfacl -p /srv/release
runuser -u builder -- touch /srv/release/acl.test
runuser -u reviewer -- test -r /srv/release/acl.test
runuser -u reviewer -- test ! -w /srv/release/acl.test
4. custom service
/etc/systemd/system/exam-wait.service:
[Unit]
Description=Exam wait service
[Service]
Type=simple
User=nobody
ExecStart=/usr/bin/sleep infinity
Restart=on-failure
RestartSec=4s
[Install]
WantedBy=multi-user.target
systemd-analyze verify /etc/systemd/system/exam-wait.service
systemctl daemon-reload
systemctl enable --now exam-wait.service
systemctl is-enabled exam-wait.service
systemctl is-active exam-wait.service
systemctl show exam-wait.service -p User -p MainPID -p RestartUSec
5. scheduled job
crontab -u builder -e에 다음 한 줄을 등록한다.
20 3 * * * /usr/local/bin/cleanup-report.sh >> /var/log/cleanup-report.log 2>&1
crontab -u builder -l
systemctl is-active crond
6. LVM and persistent mount
<EMPTY_DISK>는 반드시 문제 환경에서 확인한 빈 장치로 바꾼다.
lsblk -f
pvs; vgs; lvs
vgcreate vgexam <EMPTY_DISK>
lvcreate -L 768M -n lvlogs vgexam
mkfs.xfs /dev/vgexam/lvlogs
install -d /var/examlogs
blkid /dev/vgexam/lvlogs
/etc/fstab:
UUID=<FILESYSTEM_UUID> /var/examlogs xfs defaults 0 0
systemctl daemon-reload
findmnt --verify
mount -a
findmnt /var/examlogs
7. swap
lvcreate -L 256M -n lvswap vgexam
mkswap /dev/vgexam/lvswap
blkid /dev/vgexam/lvswap
/etc/fstab:
UUID=<SWAP_UUID> none swap defaults 0 0
swapon -a
swapon --show
findmnt --verify
8. firewall
firewall-cmd --get-active-zones
# 위 출력에서 문제의 interface가 연결된 zone을 확인한 뒤 <ACTIVE_ZONE>을 치환
firewall-cmd --permanent --zone=<ACTIVE_ZONE> --add-port=9090/tcp
firewall-cmd --reload
firewall-cmd --zone=<ACTIVE_ZONE> --query-port=9090/tcp
firewall-cmd --permanent --zone=<ACTIVE_ZONE> --query-port=9090/tcp
active zone이 여러 개면 interface와 문제 대상을 확인해 직접 선택한다.
9. static route
nmcli connection show
nmcli connection modify '<CONNECTION>' \
+ipv4.routes '203.0.113.0/24 <PROVIDED_GATEWAY>'
nmcli connection up '<CONNECTION>'
nmcli -f ipv4.routes connection show '<CONNECTION>'
ip route
ip route get 203.0.113.10
10. SSH server
drop-in을 지원하는 환경이라면 /etc/ssh/sshd_config.d/90-exam.conf:
PermitRootLogin no
sshd -t
sshd -T | grep -i '^permitrootlogin'
systemctl reload sshd
journalctl -u sshd -n 20 --no-pager
현재 관리자 접근을 보존한 별도 session에서 일반 관리자 계정 로그인을 먼저 확인한다.
11. SELinux file context
getenforce
semanage fcontext -a -t httpd_sys_content_t '/srv/examweb(/.*)?'
restorecon -Rv /srv/examweb
ls -ldZ /srv/examweb
matchpathcon /srv/examweb
curl http://127.0.0.1/<PROVIDED_PATH>
12. Git
cd <PROVIDED_REPOSITORY>
git status
git switch -c fix/limit
git add limits.conf
git diff --cached
git commit -m 'Adjust limits configuration'
git switch main
git merge fix/limit
git status
git log --oneline --graph -5
debug.tmp가 untracked로 남았고 commit에 포함되지 않았는지 git status와 git show --stat로 확인한다.