LFCS 사용자 환경·limits·ACL·LDAP 실습
환경 프로필, 사용자 자원 제한, ACL과 LDAP 계정 연동을 직접 검증하는 시나리오
아래 문제는 공개된 LFCS 시험문항이나 복원 문제가 아니다. 공식 Users and Groups 범위를 바탕으로 독자적으로 만든 연습 시나리오다. 로컬 계정과 SGID는 사용자·그룹·SGID 실습에서 먼저 연습한다.
작성·검증 상태: AI가 문제와 풀이 초안을 보조했다. SSSD 예시는 RHEL 계열 흐름을 기준으로 하며 LDAP provider까지 포함한 전체 login 경로는 실습 환경에서 별도 검증해야 한다.
1. 시스템 전체 환경 프로필 — 7분
문제
모든 Bash 사용자의 새 로그인 shell에서 다음 조건이 적용되게 하라.
EDITOR=vim/opt/tools/bin이 기존 PATH 앞에 한 번만 추가됨- 설정은
/etc/profile.d/lfcs-tools.sh에 둠
완료 조건
- 기존 PATH를 보존한다.
- 여러 번 읽어도 같은 경로가 중복되지 않는다.
- 현재 shell이 아니라 새 로그인 shell에서 결과를 확인한다.
안전 주의
PATH를 빈 값이나 /opt/tools/bin 하나로 덮어쓰지 않는다. 공통 profile의 문법 오류는 여러 사용자 로그인에 영향을 준다.
풀이 예시
cat > /etc/profile.d/lfcs-tools.sh <<'PROFILE'
export EDITOR=vim
case ":$PATH:" in
*:/opt/tools/bin:*) ;;
*) export PATH="/opt/tools/bin:$PATH" ;;
esac
PROFILE
chmod 644 /etc/profile.d/lfcs-tools.sh
bash -n /etc/profile.d/lfcs-tools.sh
runuser -l lfcsuser -c 'printf "EDITOR=%s\nPATH=%s\n" "$EDITOR" "$PATH"'
같은 검증 명령을 다시 실행해 /opt/tools/bin이 한 번만 있는지 확인한다.
2. 사용자 파일 descriptor limit — 8분
문제
batch 사용자의 새 로그인 session에 다음 제한을 영구 적용하라.
- open files soft limit:
4096 - open files hard limit:
8192 - 설정 파일:
/etc/security/limits.d/batch.conf
완료 조건
- soft·hard 값을 올바른 순서로 설정했다.
- 새 session에서 두 값을 확인했다.
- 실행 중 프로세스에는 소급 적용되지 않는 이유를 설명할 수 있다.
- systemd 서비스에는 별도 설정이 필요할 수 있음을 확인했다.
안전 주의
기존 값과 서비스 요구량을 확인한다. limit을 크게 올리는 것을 문제 해결로 단정하지 않는다.
풀이 예시
getent passwd batch >/dev/null || useradd -m -s /bin/bash batch
cat > /etc/security/limits.d/batch.conf <<'LIMITS'
batch soft nofile 4096
batch hard nofile 8192
LIMITS
chmod 644 /etc/security/limits.d/batch.conf
runuser -l batch -c 'printf "soft="; ulimit -Sn; printf "hard="; ulimit -Hn'
예상값이 나오지 않으면 PAM stack에서 pam_limits.so가 적용되는지 확인한다. systemd가 시작한 서비스라면 다음처럼 effective 값을 별도로 본다.
systemctl show example.service -p LimitNOFILE
3. access·default ACL — 8분
문제
/srv/reports에 다음 조건을 구성하라.
analyst는 디렉터리에 진입하고 기존 보고서를 읽을 수 있다.- 앞으로 생성되는 항목에도
analyst의 읽기·진입 기본 ACL이 적용된다. - 기존 소유자·그룹 권한은 유지한다.
완료 조건
- access ACL과 default ACL을 모두 설정했다.
- ACL mask가 유효 권한을 줄이지 않는지 확인했다.
- 새 파일에 상속된 ACL을 확인했다.
analyst사용자로 실제 읽기를 시험했다.
안전 주의
재귀 변경 전에 기존 ACL을 저장한다. default ACL은 기존 파일을 소급 변경하지 않는다는 점을 고려한다.
풀이 예시
getent passwd analyst >/dev/null || useradd -m -s /bin/bash analyst
install -d -o root -g root -m 0750 /srv/reports
test -e /srv/reports/existing-report.txt || printf 'existing report\n' > /srv/reports/existing-report.txt
chmod 0640 /srv/reports/existing-report.txt
getfacl -R /srv/reports > /root/reports-acl.before
setfacl -m u:analyst:rx /srv/reports
setfacl -m d:u:analyst:rx /srv/reports
setfacl -m u:analyst:r /srv/reports/existing-report.txt
getfacl /srv/reports
touch /srv/reports/new-report.txt
getfacl /srv/reports/existing-report.txt /srv/reports/new-report.txt
runuser -u analyst -- test -r /srv/reports/existing-report.txt && echo existing-readable
runuser -u analyst -- test -r /srv/reports/new-report.txt && echo readable
파일 내용까지 읽어야 한다면 owner가 만든 파일의 mode와 default ACL mask를 함께 확인한다.
4. LDAP 계정 연동 — 15분
실습 조건
별도 LDAP 서버와 LDAP 사용자 alice가 준비되어 있고 다음 정보가 제공됐다고 가정한다. 실습 VM에는 콘솔에서 로그인 가능한 로컬 관리자 lfcsadmin도 미리 만들어 두며, LDAP 설정과 무관하게 sudo가 되는지 확인한다.
URI: ldaps://ldap.lab.example
Base DN: dc=lab,dc=example
Test user: alice
TLS CA: /etc/openldap/certs/lab-ca.pem
문제
SSSD를 사용해 alice를 시스템 계정으로 조회하고 로그인 session을 만들 수 있게 하라. 첫 로그인 시 홈 디렉터리도 생성되게 한다.
완료 조건
- DNS·시간·TLS와 LDAP 조회를 먼저 확인했다.
sssd.conf는 root 전용0600이다.getent passwd alice와id alice가 성공한다.- PAM 인증과 홈 생성은 별도로 검증한다.
lfcsadmin의 로컬 관리자 로그인 경로를 유지했다.
안전 주의
실제 URI, base DN, schema, bind 방식과 CA는 서버 운영자 정보에 맞춘다. 기존 인증 설정을 강제로 교체하기 전 현재 profile을 기록하고 콘솔과 로컬 복구 계정을 준비한다. bind 비밀번호를 shell history에 남기지 않는다.
풀이 예시
Rocky/RHEL 계열 VM에 필요한 client 구성 요소를 설치하고 로컬 복구 계정을 확인한다.
dnf install -y sssd sssd-ldap sssd-tools openldap-clients oddjob-mkhomedir
getent passwd lfcsadmin
id lfcsadmin
연결과 directory 조회를 먼저 확인한다.
getent hosts ldap.lab.example
timedatectl status
openssl s_client -connect ldap.lab.example:636 \
-servername ldap.lab.example \
-verify_hostname ldap.lab.example \
-verify_return_error \
-CAfile /etc/openldap/certs/lab-ca.pem </dev/null
LDAPTLS_CACERT=/etc/openldap/certs/lab-ca.pem \
ldapsearch -H ldaps://ldap.lab.example -b dc=lab,dc=example '(uid=alice)' dn uid
s_client 출력의 Verify return code: 0 (ok)까지 확인한 뒤 LDAP 조회로 넘어간다.
익명 조회가 허용된 연습 서버의 최소 형태 예시다. 실제 서버의 schema와 TLS 요구사항에 맞게 조정한다.
# /etc/sssd/sssd.conf
[sssd]
services = nss, pam
domains = lab
[domain/lab]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldaps://ldap.lab.example
ldap_search_base = dc=lab,dc=example
ldap_tls_cacert = /etc/openldap/certs/lab-ca.pem
ldap_tls_reqcert = demand
cache_credentials = true
Rocky/RHEL 계열 예:
chown root:root /etc/sssd/sssd.conf
chmod 600 /etc/sssd/sssd.conf
sssctl config-check
authselect current
authselect select sssd with-mkhomedir --force
systemctl enable --now oddjobd sssd
getent passwd alice
id alice
sssctl user-checks alice
journalctl -u sssd -b --no-pager
--force는 현재 authselect profile을 새 선택으로 바꾸므로, 복구 가능한 실습 VM이나 변경이 승인된 서버에서만 사용한다. 출력해 둔 authselect current 결과와 콘솔 접속 경로가 되돌리기 기준이다.
마지막으로 기존 관리자 session을 닫지 않은 채 콘솔의 별도 TTY 또는 이미 준비된 원격 로그인 경로에서 alice로 새 로그인한다. 로그인 성공과 홈 생성은 NSS 조회 성공과 별개로 확인한다.
# alice의 새 로그인 session에서
id
getent passwd alice
test -d "$HOME" && ls -ld "$HOME"
Debian/Ubuntu 계열에서는 NSS·PAM 통합 도구와 홈 생성 설정 경로가 다르므로 해당 배포판 문서를 따른다. 조회 성공 뒤 별도 새 session에서 실제 인증과 홈 생성 결과를 확인한다.
반복 기록표
| 문제 | 1차 시간 | 막힌 층 | 사용한 문서 | 2차 시간 | 실제 사용자·새 session 검증 |
|---|---|---|---|---|---|
| 환경 프로필 | |||||
| resource limit | |||||
| ACL | |||||
| LDAP |