Permission

Permission

1️⃣ Linux 사용자/그룹 관리 아키텍처

1-1. Linux 사용자 구조

+--------------------+
|    User Space      |
|--------------------|
| Applications       |
| Shells (bash/zsh)  |
+--------------------+
|    /etc/passwd      | -> 사용자 계정 정보
|    /etc/shadow      | -> 암호 정보
|    /etc/group       | -> 그룹 정보
+--------------------+
|    Kernel Space    |
|--------------------|
| 시스템 콜 / 프로세스 |
+--------------------+
  • /etc/passwd: 사용자 계정 정보 (UID, GID, 홈 디렉토리, 쉘)
  • /etc/shadow: 암호 및 만료 정보 (보안상 암호화 저장)
  • /etc/group: 그룹 정보 (GID, 사용자 목록)

🔹 그림 1: 사용자와 그룹 구조 user\_group\_arch


1-2. 계정 생성 & 수정 흐름

useradd [옵션] 사용자명
        │
        ▼
/etc/passwd, /etc/shadow, /etc/group 업데이트
        │
        ▼
홈 디렉토리 / 기본 쉘 생성
  • usermod: 기존 사용자 계정 정보 수정
  • passwd: 암호 설정/변경
  • groupadd/groupmod/groupdel: 그룹 관리

2️⃣ sudo 권한과 최소 권한 원칙(PoLP)

  • sudoers: /etc/sudoers 또는 visudo로 편집
  • PoLP(Principle of Least Privilege): 사용자에게 필요한 최소 권한만 부여

예시:

# user1에게 특정 명령만 sudo 허용
user1 ALL=(ALL) /usr/bin/systemctl restart apache2

🔹 그림 2: 권한 분리 예시 sudo\_arch


3️⃣ PAM(Pluggable Authentication Modules)

  • 위치: /etc/pam.d/
  • 기능: 로그인, su, ssh 등 다양한 인증 방법 관리
  • 예시: 비밀번호 복잡도 설정
# /etc/pam.d/common-password
password requisite pam_pwquality.so retry=3 minlen=12

🔹 그림 3: PAM 인증 흐름 pam\_arch


4️⃣ ACL(Access Control List)

  • 기존 유닉스 권한은 소유자/그룹/기타 사용자로만 권한 관리
  • ACL을 사용하면 특정 사용자에게도 권한 부여 가능
# ACL 설정
setfacl -m u:username:rwx /data/project

# ACL 확인
getfacl /data/project

🔹 그림 4: ACL 권한 구조 acl\_arch


5️⃣ Ubuntu 22.04 실습 시나리오

5-1. 사용자 생성 & 수정

# 사용자 생성
sudo useradd -m -s /bin/bash devuser
sudo passwd devuser

# 그룹 생성
sudo groupadd devgroup
sudo usermod -aG devgroup devuser

5-2. sudo 최소 권한 설정

sudo visudo
# 내용 추가:
devuser ALL=(ALL) /usr/bin/systemctl restart apache2

5-3. PAM 테스트

sudo apt install libpam-pwquality
sudo nano /etc/pam.d/common-password
# 아래 내용 확인/수정
password requisite pam_pwquality.so retry=3 minlen=12

5-4. ACL 실습

sudo mkdir /data/project
sudo chown devuser:devgroup /data/project
sudo setfacl -m u:otheruser:rwx /data/project
getfacl /data/project

🔹 시나리오 목표:

  1. 사용자 계정 생성 및 그룹 배정
  2. sudo를 통한 최소 권한 정책 적용
  3. PAM을 통한 비밀번호 정책 적용
  4. ACL을 활용한 특정 파일/디렉토리 권한 제어
마지막 수정일자