파일 권한 (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 6406 = 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

컬럼 해부

위치예시의미
1drwxr-x---파일 타입(1자) + 권한(9자 = u/g/o 3자씩)
27하드링크 수 (디렉터리는 보통 2 + 서브디렉터리 수, 파일은 보통 1)
3meatsby소유자 (user)
4meatsby소속 그룹 (group)
54096크기 (바이트)
6Jan 15 22:34마지막 수정 시각
7.파일·디렉터리 이름

파일 타입(첫 글자) — - 일반 파일, d 디렉터리, l 심볼릭 링크, c·b·p·s 등 특수.

관찰되는 권한 패턴

  • drwxr-x--- 7 meatsby meatsby . = 750. 홈 디렉터리 = user 풀 권한, group 은 읽기·들어가기만, other 차단.
  • drwxr-xr-x 3 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 만 접근. .ssh700 이라 sshd 가 안전하다고 인정 (느슨하면 키 로드 거부).
  • drwxr-xr-x 6 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 권한 적용.

.ssh700 이어야 하나

### 권한 판정 순서 의 함정이 보안 측면에서 발동. 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 모델이 단순한 화이트리스트가 아니라 보안의 강제 장치.

권한 판정 순서 (중요)

커널은 가장 구체적인 분류 하나만 적용하고 멈춘다.

  1. 소유자인가? → user 권한 적용, 종료.
  2. 그룹 멤버인가? → group 권한 적용, 종료.
  3. 둘 다 아닌가? → other 적용. 함정 = other 에 r 줬어도 group 에 안 줬다면, 그룹 멤버는 group 규칙이 먼저 걸려 오히려 못 읽는다 (other 라면 읽을 수 있었을 텐데).

참고

  • root 는 이 권한 체크를 대부분 무시.
  • 디렉터리에서는 r·w·x 의미가 파일과 다르다. 디렉터리의 x = “그 안으로 들어갈 수 있다”.

References