형식 -> 명령 [옵션][인자]
- 명령 : 사용자가 컴퓨터 운영체제나 응용프로그램에게 어떤 서비스를 수행하도록 요구하는 것
- 옵션 : 옵션을 사용하여 명령의 세부 기능을 선택할 수 있다. 리눅스의 기능을 풍부하게 하는 중요한 특징. "-"기호로 시작하며 영문 소문자나 대문자로 구성. 명령에 따라 어떤 옵션이 있고 그 기능이 무엇인지는 해당 명령의 사용법을 참조
- 인자 : 명령으로 전달되는 값으로 주로 파일명이나 디렉터리명
- chmod [옵션][문자 or 숫자조합] [파일 or 디렉토리]
리눅스 파일 시스템에서 파일을 생성시 파일을 생성한 사용자가 파일에 대한 제어를 할 수 있다. 그러나 서비스를 운영하다보면 다른 사용자에게 접근, 읽기, 쓰기 같은 권한을 주어야할 경우가 있다. 다른 사용자에게 접근 권한을 부여할 때 사용되는 명령어가 바로 chmod이다. chmod 명령어는 change와 mode의 앞글자를 조합한 명령어로 파일의 권한을 변경하는 명령어이다. 소유자, 그룹, 익명사용자에게 각각 별도로 지정이 가능하며, 권한을 지정 시 숫자, 알파벳, 기호, 특수문자를 통해 설정할 수 있다. 기본적으로 파일 및 디렉토리의 모드 비트를 변경하므로 모드의 종류와 사용법을 익혀야 한다.
옵션 | long옵션 | 설명 |
---|---|---|
-c | --changes | 기존에 지정된 모드에서 변경되는 경우에만 메시지를 출력 |
-f | --silent, --quiet | 오류메시지를 출력하지 않음 |
-v | --verbose | 지정한 모드로 처리된 모든 파일 및 디렉토리에 대한 메시지를 출력 |
-R | --recursive | 지정한 파일의 모드를 하위까지 변경 |
1번 : 파일 종류
문자 | 설명 |
---|---|
- | Regurlar File, 일반파일을 의미 |
d | Directory File의 약자로 디렉토리 파일을 의미 |
b | Block Device File의 약자로 블록 디바이스 파일을 의미 |
c | Character Device File의 약자로 문자 디바이스 파일을 의미 |
l | Symbolic Link File의 약자로 심볼릭 링크 파일을 의미 |
2번 : 파일소유자(user) 영역. 위 그림의 디렉토리와 파일의 소유자는 kim
3번 : 파일소유자그룹(group) 영역. 위 그림의 디렉토리와 파일의 그룹은 scool
4번 : 그 외 사용자(others) 영역
타입 | 모드 | 설명 |
---|---|---|
사용자 | u | 소유자(user)의 약자로 각 파일 및 디렉토리의 소유자 권한을 변경할 때 지정 |
g | 그룹(group)의 약자로 각 파일 및 디렉토리의 그룹 권한을 변경할 때 지정 | |
o | 그 외 사용자(others)의 약자로 각 파일 및 디렉토리의 그 외 사용자 권한을 변경할 때 지정 | |
a | all users의 약자로 각 파일 및 디렉토리의 그 외 사용자 권한을 변경할 때 지정 | |
기호 | + | 현재모드에 지정한 권한을 추가하겠다는 의미 |
- | 현재모드에 지정한 권한을 제거하겠다는 의미 | |
= | 현재모드에 지정한 권한을 지정하겠다는 의미 | |
권한 | r | 읽기(read)의 약자로 파일의 읽기 권한을 부여 |
w | 쓰기(write)의 약자로 파일의 쓰기 권한을 부여 | |
x | 실행(execute)의 약자로 파일의 실행 권한을 부여 | |
X | 디렉토리 또는 파일에 실행 권한이 있는 경우 지정한 사용자의 실행 권한을 부여 | |
s | 특수 권한으로 소유자에 userid, 그룹에 setgid를 실행 관련 권한을 부여. 설정 부여 시 기존 실행권한 자리에 실행권한이 있으면 소문자(s) 없다면 대문자(S)로 부여 | |
t | 특수권한으로 그 외 사용자에 sticky bit를 실행 관련 권한을 부여. 설정 부여 시 기존 실행권한 자리에 실행권한이 있으면 소문자(t) 없다면 대문자(T)로 부여 |
언뜻 보기에, MODE 파라미터에 적용되는 문자열이 꽤 복잡해 보일 수 있지만, 사실, 알고보면 매우 직관적이다. MODE 파라미터로 조합되는 문자 조합을 생각하기 전에, 파일에 지정하고자 하는 권한을 먼저 서술형 문장으로 표현해보면 chmod 명령 작성을 좀 더 쉽게 할 수 있다.
chmod g+x FILE
chmod a=r FILE
chmod go-rwx FILE
문자조합보다 도금 더 간단하게 파일모드(mode)를 지정하는 방법이다. 이 방법은 8진수를 이용하는데, 8진수 갓ㅂ을 사용하는 방법은 각 권한을 8진수 형태의 숫자값으로 변환하여 한번에 지정하는 방법이다. 즉, rwxrwxrwx 중 rwx를 하나의 8진수 값으로 변환한 다음, 이 값을 연속 3개(사용자, 그룹, 그 외 사용자)로 나열하여 전달하는 것이다. 이 때, 권한없음(-)은 0, 읽기(r)는 4, 쓰기(w)는 2, 그리고 실행(x)은 1에 해당하는 값을 가지며, 이 값들을 모두 더한 값이 하나의 8진수 값으로 변환된다.
chmod 000 FILE
---------- 1 root root 23 Mar 26 04:13 FILE
chmod 755 FILE
-rwxr-xr-x 1 root root 23 Mar 26 04:13 FILE
chmod 440 FILE
-r--r----- 1 root root 23 Mar 26 04:13 FILE
리눅스에서 파일 또는 디렉토리에 지정된 권한을 확인하기 위해 사용되는 명령어이다.
[root@localhost home]# ls -l
합계 4
-rw-r--r--. 1 root root 270 7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256 7월 14 18:02 varcopy
공백 기준으로 가장 첫번째 항목(-rw-r--r--)이 파일 소유자 별 권한, 세번째(root)와 네번째(root) 항목이 각각 파일 소유자와 그룹을 나타낸다.
기존에 지정된 모드에서 변경되는 경우에만 메시지를 출력한다.
[root@localhost home]# ls -l
합계 4
-rw-r--r--. 1 root root 270 7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256 7월 14 18:02 varcopy
[root@localhost home]# chmod -c 644 text.txt
[root@localhost home]# chmod -c 755 text.txt
mode of `text.txt' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
위를 보면 -c 옵션을 사용하여 기존 권한과 동일하게 명령어를 작성하면 아무런 메시지가 출력되지 않지만 기존 권한에서 변경된 명령어를 작성하면 변경되었다는 메시지가 출력되는 것을 볼 수 있다. 메시지를 확인해보면 친절하게 이전모드와 변경된 모드를 보여주고 있다.
지정한 모드로 처리된 모든 파일 및 디렉토리에 대한 메시지를 출력한다.
[root@localhost home]# ls -l
합계 12
-rw-r--r--. 1 root root 34 7월 21 07:23 fruit.txt
-rw-r--r--. 1 root root 12 7월 21 07:21 hello.txt
-rwxrwxrwx. 1 root root 270 7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256 7월 14 18:02 varcopy
[root@localhost home]# chmod -v u+rw fruit.txt
`fruit.txt'의 모드를 0644(rw-r--r--)으로 유지하였습니다
[root@localhost home]# chmod -v 644 fruit.txt
`fruit.txt'의 모드를 0644(rw-r--r--)으로 유지하였습니다
[root@localhost home]# chmod -v 755 fruit.txt
mode of `fruit.txt' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
-v 옵션을 사용항여 기존 권한과 동일하게 작성하면 모드를 유지하였다는 메시지가 출력되고, 기존 권한 설정과 다르게 작성하면 이전 모드와 새로 바뀐 모드가 출력되면서 모드가 바뀌었다는 메시지가 출력되는 것을 확인해 볼 수 있다.
지정한 파일의 모드를 하위까지 변경한다.
[root@localhost home]# ls -l
합계 12
-rwxr-xr-x. 1 root root 34 7월 21 07:23 fruit.txt
-rw-r--r--. 1 root root 12 7월 21 07:21 hello.txt
-rwxrwxrwx. 1 root root 270 7월 16 01:16 text.txt
drwxr-xr-x. 18 root root 256 7월 14 18:02 varcopy
[root@localhost home]# chmod -R 777 /home
[root@localhost home]# ls -l
합계 12
-rwxrwxrwx. 1 root root 34 7월 21 07:23 fruit.txt
-rwxrwxrwx. 1 root root 12 7월 21 07:21 hello.txt
-rwxrwxrwx. 1 root root 270 7월 16 01:16 text.txt
drwxrwxrwx. 18 root root 256 7월 14 18:02 varcopy
좋은 글 감사합니다.