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: 사용자와 그룹 구조
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: 권한 분리 예시
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 인증 흐름
4️⃣ ACL(Access Control List)
- 기존 유닉스 권한은 소유자/그룹/기타 사용자로만 권한 관리
- ACL을 사용하면 특정 사용자에게도 권한 부여 가능
# ACL 설정
setfacl -m u:username:rwx /data/project
# ACL 확인
getfacl /data/project
🔹 그림 4: ACL 권한 구조
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
🔹 시나리오 목표:
- 사용자 계정 생성 및 그룹 배정
- sudo를 통한 최소 권한 정책 적용
- PAM을 통한 비밀번호 정책 적용
- ACL을 활용한 특정 파일/디렉토리 권한 제어
마지막 수정일자