Post

[Linux] Ununtu 퍼미션 이해하기: chmod

원격 Linux 환경에서 작업을 하던 중, Docker 컨테이너에서 마운트된 디렉토리에 파일을 생성하면 외부 환경에서는 권한 문제로 해당 파일을 수정하지 못하는 경우가 종종 발생하는 경우가 있다. 이를 해결하기 위해 리눅스 환경에서 파일 및 디렉토리의 권한을 변경하는 방법을 정리하여 기록으로 남기고자 한다.


리눅스 퍼미션 구조

리눅스에서 모든 파일과 디렉토리는 사용자(user), 그룹(group), 기타 사용자(other)로 나뉘며, 각 주체에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 설정할 수 있습니다.

사용자 유형

기호의미
u소유자 (user)
g그룹 (group)
o기타 사용자 (others)
a전체 (all = u+g+o)

권한 기호와 의미

권한기호숫자 값설명
읽기r4파일 내용을 읽을 수 있음
쓰기w2파일을 수정할 수 있음
실행x1파일 실행 또는 디렉토리 접근 가능

chmod 명령어 형식

기호(SYMBOLIC) 방식

1
chmod [user][+|-|=][permission] 파일명
  • +: 권한 추가
  • -: 권한 제거
  • =: 해당 권한만 설정하고 기존 권한 제거
1
2
3
chmod u+x script.sh        # 사용자에게 실행 권한 추가
chmod go-w file.txt        # 그룹, 기타 사용자에게 쓰기 권한 제거
chmod a=r file.txt         # 모든 사용자에게 읽기 권한만 부여

숫자(NUMERIC) 방식

1
chmod [권한숫자] 파일명

각 사용자 유형(u/g/o)의 권한 값을 더한 3자리 숫자이다.

권한조합설명
rwx7읽기 + 쓰기 + 실행
rw-6읽기 + 쓰기
r-x5읽기 + 실행
r--4읽기
--x1실행
---0권한 없음
1
2
3
chmod 755 script.sh       # 사용자: rwx, 그룹/기타: r-x
chmod 644 readme.md       # 사용자: rw-, 그룹/기타: r--
chmod 777 all-access.sh   # 모든 사용자에게 모든 권한 부여

디렉토리 권한 변경

디렉토리에도 실행(x) 권한이 필요하다. 실행권한이 있어야 진입하고자 하는 해당 디렉토리 안으로 진입할 수 있다.

1
2
chmod 755 mydir/        # 사용자: rwx, 그룹/기타: r-x

재귀적 권한 변경

하위 폴더/파일까지 한 번에 권한을 주려면 -R 옵션을 사용합니다.

1
chmod -R 755 myproject/

퍼미션 해석 예제

1
-rwxr-xr-x 1 root 1001 5680 Apr 14 13:41 requirements.txt

구조 분석

위치권한 의미
-일반 파일
rwx사용자(root): 읽기,쓰기,실행
r-x그룹(1001): 읽기,실행
r-x기타 사용자: 읽기,실행
chmod 명령어설명
chmod 644 file사용자: 읽기+쓰기, 그룹/기타: 읽기만
chmod 755 script사용자: 읽기+쓰기+실행, 그룹/기타: 읽기+실행
chmod -R 755 dir/디렉토리 및 하위 전체에 권한 설정
chmod o-w file기타 사용자 쓰기 권한 제거
This post is licensed under CC BY 4.0 by the author.

© chanho. Some rights reserved.