리눅스
[리눅스] 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 # 소유자에게 읽기/쓰기만 부여