Post

Linux Permission 해석하는 방법 정리 (rwx-rx-r--)

Linux Permission 해석하는 방법 정리 (rwx-rx-r--)

Linux File 권한 알아보기

Example

아래 코드의 권한을 해석하시오.

- r w - r - - r - - @


문자 위치 해석

  1. 첫 문자: 파일 타입
    • -: 일반 파일
    • d: 디렉토리
    • l: 심볼릭 링크
    • c/b: 문자/블록 디바이스 등
  2. 다음 9문자: 권한 문제
    • owner: positions 2-4 (r w x 또는 -
    • group: positions 5-7
    • others: positions 8-10
      1. rw- r-- r--
  3. 마지막 문자(옵션): 추가 표시
    • +: ACL (Access Control List) 존재 (주로 GNU/리눅스 ls 또는 일부 시스템)
    • @: extended attributes (xattr) 존재 - macOS/BSD 표기 (파일에 확장 속성 있음)
      • (macOS에서는 ls -l@가 붙으면 ls -l@ 로 확장 속성 내용 확인 가능


rwx, s, t 권한 문자

문자의미설명숫자 값
r읽기 (read)파일 내용을 읽거나 디렉토리 내 파일 목록을 볼 수 있음4
w쓰기 (write)파일 내용을 수정하거나 디렉토리 내에 파일 생성·삭제 가능2
x실행 (execute)파일이면 실행 가능, 디렉토리면 진입(cd) 가능1
-권한 없음해당 권한이 부여되지 않음0

예시:

  • owner: rwx (읽기/쓰기/실행) (7)
  • group: r-x (읽기/실행) (5)
  • others r-- (읽기만) (4)

권한 번호: 754


특수 문자

1. s / S — setuid / setgid

파일 실행 시, 실행하는 사용자의 권한이 아니라 파일 소유자(owner)나 그룹의 권한으로 실행된다. 즉, 권한을 임시로 상승시키는 역할을 한다.

기호위치의미
s소유자(owner)의 실행 위치setuid (set user ID)
s그룹(group)의 실행 위치setgid (set group ID)
S실행(x) 권한이 없는데 setuid/setgid만 설정됨실행 권한 없음 + 설정 비활성

예시:

1
2
# /usr/bin/passwd는 root 소유이지만, 일반 사용자가 실행할 때도 root 권한으로 실행된다.
-rwsr-xr-x  1 root root /usr/bin/passwd

2. t / T — Sticky bit

해당 디렉토리 안의 파일을 소유자만 삭제 가능하게 한다. 즉, 여러 사용자가 쓸 수 있는 디렉토리에서도 서로의 파일을 삭제하지 못하도록 보호할 수 있다.

기호위치의미
tothers의 실행 위치sticky bit 활성 + 실행 가능
Tothers 실행권한 없음 + sticky bit 활성 

예시:

1
2
# /tmp는 모든 사용자가 파일을 만들고 쓸 수 있지만, 자기 파일만 삭제할 수 있음.
drwxrwxrwt  9 root root /tmp


owner, group, others

owner: 소유자, 파일을 만든 사용자 혹은 chown으로 지정된 사용자이다.

group: 파일이 속한 그룹에 속한 사용자들에게 적용되는 권한으로, staff 그룹이면 staff 그룹 구성원들은 group에 권한 r—만 적용 받는다.

  • 그룹 권한은 협업 시 유용하다. 예를 들어 팀원들이 같은 그룹에 있을 때, group에 rw 권한을 주면 모두 수정이 가능하다.

others: 소유자도 아니고, 그룹에도 속하지 않은 나머지 모든 사용자

  • 보안상 가장 제한적인 권한을 가져야 한다.
  • r—이면 모든 사람이 읽을 수는 있지만 수정은 못한다.


권한 적용 우선순위

(1) Owner → (2) Group → (3) Others 즉, 사용자가 여러 그룹에 속해 있어도, 가장 상위에 해당하는 권한이 적용된다.


사용자 ↔ 그룹 관계

  • 그룹은 사용자 (user) 들로만 구성된다.
  • 디렉토리나 파일이 그룹의 구성원이 될 수는 없다. (member 관계)

그룹에 사용자 추가하기

1
2
3
4
5
# devteam 이름의 그룹 생성
sudo groupadd devteam

# eunji 사용자를 devteam 그룹에 추가
sudo usermod -aG devteam eunji


파일, 디렉토리 ↔ 그룹 관계

  • 파일이나 디렉토리는 하나의 소유 그룹에 속할 수 있다. (ownership 관계)
  • chgrp 명령어로 소유 그룹을 변경 가능

디렉토리의 소유 그룹 변경하기

1
2
3
4
5
6
7
8
# project/ 디렉토리의 소유 그룹을 devteam으로 변경
chgrp devteam project/

# project/의 소유 그룹 확인 명령어
ls -l

# 결과
# drwxrwxr-x  3 eunji devteam 4096 Oct 31  project


OS별 Group 조회 명령

1. 그룹 조회 명령어

1
cat /etc/group

2. LDAP 등 외부 인증 시스템을 사용하는 경우까지 포함한 그룹 조회

1
getent group

3. bash 내장(bash에서 지원하는 그룹 이름만 간단히 나열)

1
compgen -g

4. macOS 한정

1
dscl . list /Groups

5. windows

1
net localgroup


그룹에 권한 부여

  • g: 그룹, u: 소유자, o: 기타 사용자, a: all
  • +: 더하기 -: 빼기 =: 덮어쓰기
1
2
3
4
5
chmod g+rwx myfile.txt # 그룹에 읽기/쓰기/실행 권한 추가

chmod g+r file # 그룹의 읽기 권한 추가
chmod g-w file # 그룹의 쓰기 권한 제거
chmod g=rw file # 그룹 권한을 읽기+쓰기만으로 설정

파일 또는 디렉토리에 그룹 지정

1
2
# 그룹만 변경
chgrp devteam myfile.txt

소유자와 그룹 동시 변경

1
chown eunji:devteam myfile.txt

재귀 적용 (재귀적으로, 하위 그룹 권한에도 모두 적용하기)

1
2
chown -R eunji:devteam /srv/project
chgrp -R devteam /srv/project

기존 사용자에게 추가 그룹 부여

1
usermod -aG devteam eunji

사용자가 속한 모든 그룹 확인

1
2
3
4
groups eunji

# or
id eunji # 기본그룹(GID)와 보조그룹 모두 확인 가능


기타 Commands

-R : -R 혹은 --recursive 로 부른다. 붙이면 그 디렉토리 내부의 모든 파일과 폴더에도 동일한 동작을 수행한다. (재귀)

ex. chmod -R 755 /srv/project : 아래의 모든 하위 폴더와 파일 권한을 755로 바꾼다.

ex. chmod -R eunji:devteam /src/project : 아래의 모든 하위 폴더와 파일 소유자(owner)를 eunji, 그룹(group)을 devteam으로 바꾼다.

ex. chgrp -R devteam /srv/project : 아래의 모든 하위 폴더와 파일 전부의 그룹 소유자는 devteam으로 변경

ex. ls -R /src/project : 하위 모든 디렉토리 내용까지 목록을 한번에 출력


This post is licensed under CC BY 4.0 by the author.