리눅스

[리눅스] chmod

shs00925 2025. 4. 10. 20:53

chmod란?

파일이나 디렉토리에 권한(permission)을 설정해야 할 때가 많습니다

예를 들어 어떤 파일은 특정 사용자만 수정할 수 있도록 제한하고 다른 파일은 모두가 실행할 수 있도록 설정하고 싶을 때 chmod 명령어를 사용하게 됩니다.

 

파일 권한이란?

리눅스 시스템에서 모든 파일과 디렉토리는 소유자(owner), 그룹(group), 그리고 기타 사용자(others)에게 각각 읽기(read), 쓰기(write), 실행(execute) 권한을 가질 수 있습니다.

이 권한은 ls -l 명령어로 확인할 수 있습니다.

 

$ ls -l
test.sh -rwxr-xr--

 

  • 첫 번째 문자 -는 일반 파일(디렉토리면 d)을 의미합니다.
  • 그 뒤의 9자리 권한은 3자리씩 끊어 읽습니다: rwx / r-x / r--

 

 

chmod 기본 개념

chmod는 파일의 권한을 추가(+), 제거(-), 설정(=)할 수 있는 명령어입니다.

형식은 아래와 같습니다:

1. 누구(who)

  • u: 소유자(user)
  • g: 그룹(group)
  • o: 기타 사용자(other)
  • a: 모두(all)

2. 연산자(operator)

  • +: 권한 추가
  • -: 권한 제거
  • =: 권한을 지정(기존 권한 제거 후 설정)

3. 권한(permission)

  • r: 읽기(read)
  • w: 쓰기(write)
  • x: 실행(execute)
chmod u+x test.sh    # 소유자에게 실행 권한 추가
chmod go-rw test.txt   # 그룹과 기타 사용자에서 읽기/쓰기 제거
chmod a=r myfile       # 모든 사용자에게 읽기 권한만 설정

 

 

 

숫자(8진수)로 권한 설정하기

파일 권한은 8진수로도 설정할 수 있습니다. 각 권한의 값은 다음과 같습니다

  • r = 4
  • w = 2
  • x = 1

각 사용자 그룹(u/g/o)에 대해 이 값을 합산합니다.

권한 숫자
rwx 7 (= 4+2+1)
rw- 6 (= 4+2)
r-- 4 (= 4)
r-x 5 (= 4+1)

 

예제

chmod 755 test.sh

 

 

  • 소유자: 7 → rwx
  • 그룹: 5 → r-x
  • 기타 사용자: 5 → r-x

 

다양한 chmod 사용 예시

chmod 777 test.sh     # 모두에게 모든 권한 부여
chmod g+w test.txt    # 그룹에게 쓰기 권한 추가
chmod 600 test.txt    # 소유자만 읽기/쓰기, 나머지 접근 불가
chmod o-x test.txt    # 기타 사용자 실행 권한 제거
chmod u=rw test.txt   # 소유자에게 읽기/쓰기만 부여