chmod란?
change mode의 축약어. 유닉스와 유닉스 계통 운영체제(맥, 리눅스)에서 쓰이는 셸 명령어.
파일이나 디렉터리의 모드를 바꿀 수 있다.
ls -l 을 실행하면
파일 앞에 이런 정보들이 나온다.
-rwxr--r--
d-rwxr-xr-x
앞에 d가 붙어 있으면 디렉터리다. 안 붙어 있으면 파일이다.
-(rwx)(r--)(r--)
1 2 3
이렇게 구분할 수 있고
1은 user 파일 소유자의 권한,
2는 group 파일의 그룹멤버인 사용자 권한,
3은 others 파일의 소유자나 그 그룹의 멤버가 아닌 사용자의 권한을 뜻한다.
r은 read 읽기
w는 write 쓰기
x는 excute 실행이다.
8진법 표기란?
rwx 순서대로 2진법으로 표현해볼 수 있다.
2진법 1 1 1(2)라면 맨 앞 1은 4, 두 번째 1은 2, 마지막 1은 1이다.
따라서 read는 4, write은 2, excute은 1이 된다.
표로 정리하면 아래와 같다.
영문자 | 권한 | 2진법 표기 | 8진법 표기 |
rwx | 읽기 쓰기 실행 | 111 | 7 |
rw- | 읽기 쓰기 | 110 | 6 |
r-x | 읽기 실행 | 101 | 5 |
r-- | 읽기 | 100 | 4 |
-wx | 쓰기 실행 | 011 | 3 |
-w- | 쓰기 | 010 | 2 |
--x | 실행 | 001 | 1 |
--- | 없음 | 000 | 0 |
8진법 표기로 실행하려면 다음을 암기해야 한다.
1. rwx순이란 것. read write excute
2. rwx순으로 111 이진법 표기를 하고 이것을 8진법 숫자로 바꾼다는 것.
3. ugo순이란 것. user group others
위 세 가지를 이해하고 나면 641, 777 등 숫자를 이해할 수 있다.
8진법으로 실행하기
영문자가 번거로워서 8진법 표기로 명령어를 입력한다.
chmod 641 test.txt
의미는 test.txt에 맨 앞 6은 파일 소유자에게 읽기 쓰기 권한을 부여하고
두 번째 4이므로 그룹에게 읽기 권한을 부여,
마지막은 1이므로 기타 사용자들한테는 실행 권한을 부여하게 된다.
기타
옵션
-R 재귀적으로 파일들과 디렉터리들의 모드들을 바꾼다.
예) chmod -R u+w,go-w docs/
u사용자에게 +w쓰기 권한 추가, g그룹과 o기타 사용자에게 -w쓰기 권한 제거, docs/ 디렉터리와 그 안의 -R모든 파일들, 디렉터리들의 허가를 바꾼다.
예) chmod u+w,go-w docs
docs 디렉터리에 u사용자에게 +w쓰기 권한 추가, g그룹과 o기타 사용자에게 -w쓰기 권한 제거
참고