##
리눅스를 처음 사용할 때 가장 혼란스러운 부분 중 하나가 **파일 권한**과 **계정 관리**입니다. 이 가이드에서는 실제 예제와 함께 기초부터 체계적으로 설명합니다.
—
### 1. 리눅스 계정의 기본 구조
리눅스는 **다중 사용자 시스템**으로, 모든 프로세스와 파일은 특정 계정으로 실행됩니다.
#### ✔ 주요 계정 파일
– **/etc/passwd**: 사용자 정보 저장
“`bash
# 예시: root:x:0:0:root:/root:/bin/bash
# 사용자명:암호:UID:GID:설명:홈디렉토리:셸
“`
– **/etc/shadow**: 암호화된 비밀번호 저장 (root만 접근 가능)
– **/etc/group**: 그룹 정보 저장
#### ✔ UID/GID 이해하기
– **UID**(User ID): 사용자 고유 번호
`root=0`, `일반 사용자=1000+`
– **GID**(Group ID): 그룹 고유 번호
“`bash
id # 자신의 UID/GID 확인
“`
> 
> *(이미지: 사용자-그룹 관계도)*
—
### 2. 파일 권한의 3가지 요소
`ls -l` 명령어 실행 시 나타나는 권한 표기:
“`bash
drwxr-xr– 2 user group 4096 Jan 1 10:00 mydir
-rw-r—– 1 user group 102 Jan 1 10:00 myfile
“`
#### ✔ 권한 해독법

*(이미지: 권한 표기 분석도)*
1. **파일 유형**
`-`=일반파일, `d`=디렉토리, `l`=링크
2. **소유자 권한 (rwx)**
파일 소유자의 읽기/쓰기/실행 권한
3. **그룹 권한 (r-x)**
소유 그룹의 권한
4. **기타 사용자 권한 (r–)**
그 외 모든 사용자 권한
—
### 3. 권한 변경 실전 명령어
#### ✔ chmod: 권한 설정
**숫자 모드** (8진수):
“`bash
chmod 755 myfile # rwxr-xr-x
chmod 640 mylog # rw-r—–
“`
> – 4=읽기(r), 2=쓰기(w), 1=실행(x)
> – 7(4+2+1), 5(4+0+1), 0(0+0+0)
**문자 모드**:
“`bash
chmod u+x script.sh # 소유자에게 실행권한 추가
chmod o-w file.txt # 다른 사용자 쓰기권한 제거
chmod a+r public.txt # 모든 사용자 읽기권한 추가
“`
#### ✔ chown: 소유자 변경
“`bash
chown user:group file.txt # 소유자와 그룹 동시 변경
chown -R user dir/ # 디렉토리 재귀적 변경
“`
#### ✔ 특수 권한 (SUID, SGID, Sticky Bit)
| 권한 | 숫자값 | 예시 | 효과 |
|——|——–|————|——————————-|
| SUID | 4000 | chmod 4755 | 실행 시 소유자 권한으로 실행 |
| SGID | 2000 | chmod 2770 | 디렉토리 내 새 파일의 그룹 상속 |
| Sticky| 1000 | chmod 1777 | 디렉토리 내 파일 삭제 방지 (/tmp) |
—
### 4. 실무 적용 예제
#### 🔒 웹 서버 구성 시
“`bash
chown -R www-data:www-data /var/www # 웹 파일 소유권 변경
chmod -R 755 /var/www # 디렉토리 실행 권한 필수!
find /var/www -type f -exec chmod 644 {} \; # 파일은 644
“`
#### 🔐 개인 파일 보호
“`bash
chmod 700 ~/private # 본인만 전체 접근 가능
chmod go-rwx secret.txt # 그룹/기타 사용자 권한 제거
“`
—
### 5. 계정 관리 핵심 명령어
“`bash
# 사용자 추가
sudo adduser newuser
# 그룹 생성
sudo groupadmin developers
# 사용자를 그룹에 추가
sudo usermod -aG developers newuser
# 패스워드 변경
passwd # 본인 계정
sudo passwd username # 다른 계정 (root만)
“`
> 
> *(이미지: 계정 생성/관리 프로세스)*
—
### 6. 접근 제어 실습
1. `test_dir` 디렉토리 생성
2. 소유자를 본인 계정으로 설정
3. 권한을 750으로 변경
4. 그룹 사용자는 파일 읽기만 가능하도록 설정
“`bash
mkdir test_dir
sudo chown $USER:developers test_dir
chmod 750 test_dir
“`
—
### 💡 보안 원칙
1. **최소 권한 원칙**: 필요한 최소한의 권한만 부여
2. **정기적 감사**: `ls -lR /critical_dir` 로 권한 검토
3. **불필요 계정 제거**: 퇴사자 계정은 즉시 비활성화
4. **암호 정책**: `/etc/login.defs`에서 패스워드 주기 설정
> 
> *(이미지: 일반적인 권한 오류 메시지)*
리눅스 권한 시스템은 처음엔 복잡해 보이지만, 체계적으로 이해하면 **시스템 보안의 핵심 도구**가 됩니다. 실제 서버 환경에서 이 가이드를 참고해 안전한 환경을 구축해 보세요!