LFCS 사용자 환경·limits·ACL·LDAP 정리

사용자·그룹 도메인의 환경 프로필, 자원 제한, ACL과 LDAP 계정 연동 핵심


local account와 group 기초는 사용자·그룹 핵심 정리를 먼저 본다. 이 문서는 공식 범위의 profile·resource limit·ACL·LDAP client를 다룬다.

작성·검증 상태: AI가 구조화와 설명 초안을 보조했다. profile·limits·ACL은 local manual과 대조했으며, LDAP는 제공된 provider·schema·TLS 정책에 따라 값을 치환해야 하는 client 구성 예시다.

이 영역을 끝내는 순서

개념과 적용 범위 구분
→ 고급 안내형 lab
→ 새 session·실제 user 동작 검증
→ 영문 단계별 실전

LDAP provider 준비는 별도 server 작업이므로 2노드 실습 fixture의 입력 조건을 먼저 확인한다.

LFCS Users and Groups(10%)는 로컬 계정뿐 아니라 환경 프로필, resource limit, ACL, LDAP 계정 연동까지 포함한다. 로컬 계정과 SGID는 사용자·그룹·SGID 핵심 정리에서 먼저 확인한다.

전체 범위

공식 competency이 문서에서 볼 내용
local user·group account기존 문서의 UID·GID·기본/보조 그룹·SGID
personal·system-wide environment profile로그인·비로그인·대화형 shell과 시작 파일
user resource limitsoft·hard limit, PAM session, systemd 서비스와의 차이
ACLaccess ACL, default ACL, mask, mode bit·umask 관계
LDAP user·group accountLDAP 연결, NSS 조회, PAM 인증, SSSD, 홈 생성

1. 개인·시스템 환경 프로필

환경 파일을 고르기 전에 어떤 shell이 누구에 의해 어떻게 시작되는지 확인한다.

Bash 시작 파일

실행 방식주로 읽는 파일
login shell/etc/profile 뒤 ~/.bash_profile, ~/.bash_login, ~/.profile 중 첫 파일
interactive non-login shell~/.bashrc
non-interactive shell보통 위 파일을 자동으로 읽지 않으며 BASH_ENV 등의 조건을 확인
systemd service·cron로그인 shell 환경과 다를 수 있으므로 unit·예약 설정을 확인

배포판의 /etc/profile이 /etc/profile.d/*.sh를 읽는다면 시스템 공통 변수는 목적별 파일로 나누는 편이 관리하기 쉽다.

getent passwd lfcsuser
runuser -l lfcsuser -c 'printf "shell=%s\nPATH=%s\n" "$SHELL" "$PATH"'
bash -lic 'printf "login-interactive: %s\n" "$PATH"'
bash -ic 'printf "interactive: %s\n" "$PATH"'

PATH를 설정할 때 기존 값을 통째로 없애지 않는다.

export EDITOR=vim
export PATH="/opt/tools/bin:$PATH"

반복 적용으로 같은 경로가 계속 늘지 않는지, 빈 항목이나 현재 디렉터리(.)가 의도치 않게 들어가지 않는지도 본다. 수정한 현재 shell에서 source한 결과만 보지 말고 새 로그인 session에서 확인한다.

2. 사용자 resource limit

limit은 프로세스가 사용할 수 있는 파일 descriptor 수, 프로세스 수, core 크기 같은 자원의 범위를 정한다.

  • soft limit: 현재 적용값. 프로세스가 hard limit 이하에서 낮추거나 올릴 수 있다.
  • hard limit: 일반 사용자가 넘을 수 없는 상한이다.

현재 shell:

ulimit -Sn
ulimit -Hn
ulimit -a

실제 프로세스:

cat /proc/$$/limits
prlimit --pid $$

PAM login session에 영구 적용하는 예:

# /etc/security/limits.d/batch.conf
batch soft nofile 4096
batch hard nofile 8192

중요한 구분:

  • 설정 파일을 바꿔도 이미 실행 중인 프로세스에는 소급 적용되지 않는다.
  • /etc/security/limits.conf와 limits.d는 PAM session에서 pam_limits가 사용될 때 적용된다.
  • systemd가 직접 시작한 daemon은 PAM login을 거치지 않을 수 있다. 이 경우 unit의 LimitNOFILE=과 systemctl show를 확인한다.
systemctl show example.service -p LimitNOFILE
cat /proc/$(systemctl show -p MainPID --value example.service)/limits

오류 원인이 limit인지 확인하지 않고 값을 크게 올리면 자원 고갈 범위를 키울 수 있다.

3. ACL

ACL은 기존 소유자·그룹·other mode bit를 없애는 기능이 아니다. named user·group entry를 추가하고 mask를 통해 유효 권한을 계산한다.

getfacl /srv/reports
setfacl -m u:analyst:rx /srv/reports
setfacl -m g:auditors:r-x /srv/reports
getfacl /srv/reports

access ACL과 default ACL

  • access ACL: 현재 파일·디렉터리에 대한 접근 권한이다.
  • default ACL: 디렉터리 아래 새로 생성되는 항목의 초기 ACL에 영향을 준다.
  • default ACL은 이미 존재하는 파일을 소급 변경하지 않는다.
setfacl -m d:u:analyst:rx /srv/reports
setfacl -m d:g:auditors:r-x /srv/reports
getfacl /srv/reports

ls -l 끝의 +는 추가 ACL이 있음을 알려줄 뿐 상세 entry와 effective 권한을 모두 보여 주지 않는다. getfacl에서 mask와 #effective: 표시를 확인하고 대상 사용자로 실제 접근을 시험한다.

runuser -u analyst -- test -r /srv/reports/sample && echo readable

백업·복사 도구가 ACL과 extended attribute를 보존하는지도 별도 확인해야 한다.

4. LDAP 사용자·그룹 계정

LDAP 연동은 한 단계가 아니다.

DNS·시간·TLS·포트
→ directory search
→ NSS 계정 조회
→ PAM 인증
→ session과 홈 디렉터리

각 층을 따로 확인한다.

층질문대표 확인
연결서버 이름·주소·TLS·포트가 맞는가?getent hosts, openssl s_client
directorybase DN과 filter로 entry를 찾을 수 있는가?ldapsearch
NSS시스템 명령에서 사용자·그룹이 보이는가?getent passwd alice, id alice
PAM실제 인증과 account policy가 통과하는가?sssctl user-checks, 새 login
session홈·shell·환경이 준비되는가?getent, login 후 pwd, id

SSSD를 사용하는 일반적인 구성 요소:

/etc/sssd/sssd.conf
nsswitch.conf의 passwd·group 조회 경로
PAM의 인증·account·session 경로
TLS CA trust

/etc/sssd/sssd.conf에는 bind 정보가 포함될 수 있으므로 root 소유와 0600 권한을 유지한다. 설정 후 다음을 분리해 확인한다.

sssctl config-check
systemctl status sssd --no-pager
getent passwd alice
id alice
sssctl user-checks alice
journalctl -u sssd -b --no-pager

ldapsearch 성공은 LDAP 서버 조회가 된다는 뜻이고, getent 성공은 NSS 조회가 된다는 뜻이다. 둘 다 실제 PAM 인증 성공을 보장하지 않는다.

배포판에 따라 통합 도구가 다르다. Rocky/RHEL 계열은 authselect, Debian/Ubuntu 계열은 pam-auth-update와 NSS/PAM 설정을 사용할 수 있다. 정확한 provider, base DN, TLS, schema와 인증 방식은 실습 LDAP 서버의 정보에 맞춘다.

문제 해결 순서

계정이 안 보임
→ DNS·시간·TLS → ldapsearch → sssd.conf 권한·문법 → SSSD 로그 → NSS

계정은 보이지만 로그인 실패
→ PAM 경로 → account policy → 인증 방식 → SSSD/PAM 로그

로그인은 되지만 홈이 없음
→ session 모듈 → mkhomedir 설정 → 홈 상위 경로 권한·SELinux

로컬 관리자 접근 경로를 유지한 채 연동을 시험한다. LDAP 장애가 로컬 복구 계정까지 막지 않도록 한다.

압축 체크리스트

  • shell 종류와 사용자 범위를 확인한 뒤 profile 파일을 고른다.
  • profile 변경을 새 session에서 검증한다.
  • soft·hard와 PAM·systemd 적용 경로를 구분한다.
  • 실제 프로세스의 effective limit을 확인한다.
  • access·default ACL과 mask를 구분한다.
  • ACL은 대상 사용자 동작으로 검증한다.
  • LDAP search, NSS 조회, PAM 인증, 홈 생성을 각각 검증한다.
  • 원격 인증을 바꿀 때 로컬 복구 경로를 유지한다.

참고 자료