파일 권한 (user/group/other)
리눅스의 모든 파일 = 소유자(user) 한 명 + 소속 그룹(group) 하나. 접근하려는 사람은 그 파일 기준으로 셋 중 하나다.
- user (u) = 파일 소유자. 보통 만든 사람.
- group (g) = 파일의 소속 그룹에 속한 사용자들 (소유자 본인 제외).
- other (o) = 위 둘 다 아닌 나머지.
같은 파일에 누구냐에 따라 다른 권한을 부여할 수 있다.
권한 표기
ls -l출력 예 =-rw-r------ 맨 앞 1 글자(파일 타입) 제외, 3 글자씩 =
rw-(user) /r--(group) /---(other). - 각 자리 =
r읽기 (4) /w쓰기 (2) /x실행 (1). - 숫자 표기 = 각 분류 값 합산. 예)
chmod 640→6=rw-,4=r--,0=---.
예시 — payroll.txt
- user (HR 매니저) → 읽기·쓰기
- group (
hr그룹 직원들) → 읽기만 - other (그 외 전 직원) → 권한 없음
명령
ls -al <경로> # 권한 + ownership 확인 (`ls -l` 동일)
chmod 640 <파일> # user rw-, group r--, other 없음
chmod u=rw,g=r,o= <파일> # symbolic 방식 (위와 동일 결과)
chmod -R 750 <디렉터리> # 재귀 적용
chown <user>:<group> <파일> # ownership 변경 (대개 root 필요)실제 예시 — ls -al
root@lima-default:/home/meatsby.linux# ls -al
total 48
drwxr-x--- 7 meatsby meatsby 4096 Jan 15 22:34 .
drwxr-xr-x 3 root root 4096 Dec 24 17:50 ..
-rw-r--r-- 1 meatsby meatsby 220 Sep 8 2025 .bash_logout
-rw-r--r-- 1 meatsby meatsby 4315 Dec 24 17:50 .bashrc
drwx------ 2 meatsby meatsby 4096 Dec 24 17:50 .cache
drwxr-xr-x 6 meatsby root 4096 Dec 24 17:52 .config
drwxrwxr-x 3 meatsby meatsby 4096 Dec 24 17:50 .local
-rw-r--r-- 1 meatsby meatsby 923 Dec 24 17:50 .profile
drwx------ 2 meatsby meatsby 4096 Dec 24 17:50 .ssh
-rw-r--r-- 1 meatsby root 116 Dec 24 17:50 .zshrc
drwxrwxr-x 2 meatsby meatsby 4096 Jan 15 22:34 z컬럼 해부
| 위치 | 예시 | 의미 |
|---|---|---|
| 1 | drwxr-x--- | 파일 타입(1자) + 권한(9자 = u/g/o 3자씩) |
| 2 | 7 | 하드링크 수 (디렉터리는 보통 2 + 서브디렉터리 수, 파일은 보통 1) |
| 3 | meatsby | 소유자 (user) |
| 4 | meatsby | 소속 그룹 (group) |
| 5 | 4096 | 크기 (바이트) |
| 6 | Jan 15 22:34 | 마지막 수정 시각 |
| 7 | . | 파일·디렉터리 이름 |
파일 타입(첫 글자) — - 일반 파일, d 디렉터리, l 심볼릭 링크, c·b·p·s 등 특수.
관찰되는 권한 패턴
drwxr-x---7 meatsby meatsby.=750. 홈 디렉터리 = user 풀 권한, group 은 읽기·들어가기만, other 차단.drwxr-xr-x3 root root..=755. 상위(/home) = root 소유. 모든 user 가 들어가야 하니 other 도r-x.-rw-r--r--.bashrc,.bash_logout,.profile=644. 평범한 dotfile — user 만 수정, 누구나 읽음.drwx------2 meatsby meatsby.cache,.ssh=700. user 만 접근..ssh가700이라 sshd 가 안전하다고 인정 (느슨하면 키 로드 거부).drwxr-xr-x6 meatsby root.config=755, owner=meatsby인데 group=root(드문 케이스).drwxrwxr-x.local,z=775. group 도 쓰기 가능 — 그룹 공유 폴더 패턴.-rw-r--r--1 meatsby root.zshrc=644, group=root. root 그룹 멤버만 group 권한 적용.
왜 .ssh 가 700 이어야 하나
위 ### 권한 판정 순서 의 함정이 보안 측면에서 발동. sshd 는 priv key 가 들어있는 디렉터리·파일이 다른 사용자(group/other) 에게 접근 가능하면 거부:
Permissions 0644 for '/home/.../.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
→ user 만 접근(700/600) 으로 강제. user/group/other 모델이 단순한 화이트리스트가 아니라 보안의 강제 장치.
권한 판정 순서 (중요)
커널은 가장 구체적인 분류 하나만 적용하고 멈춘다.
- 소유자인가? → user 권한 적용, 종료.
- 그룹 멤버인가? → group 권한 적용, 종료.
- 둘 다 아닌가? → other 적용.
함정 = other 에
r줬어도 group 에 안 줬다면, 그룹 멤버는 group 규칙이 먼저 걸려 오히려 못 읽는다 (other 라면 읽을 수 있었을 텐데).
참고
root는 이 권한 체크를 대부분 무시.- 디렉터리에서는
r·w·x의미가 파일과 다르다. 디렉터리의x= “그 안으로 들어갈 수 있다”.