chmod는 파일이나 디렉터리의 권한 등의 모드를 변경합니다.
명령어는 다음과 같이 쓸 수 있습니다.
$ chmod [options] mode file1
권한 변경
chmod 폴더에는 다음과 같이 4개의 파일들이 있습니다. 맨 왼쪽에 9개의 문자 rwxr-xr-x
는 파일의 권한(모드)을 의미합니다. ls -l
을 사용하면 파일의 권한 상태를 볼 수 있습니다.
chmod$ ls -l
total 16
-rwxrwxrwx 1 js js 6 3월 10 16:02 file1.txt
-rw-r--r-- 1 js js 6 3월 10 16:02 file2.txt
-rw-r--r-- 1 js js 6 3월 10 16:02 file3.txt
-rw-r--r-- 1 js js 6 3월 10 16:02 file4.txt
일반적으로 사용자가 파일에 접근할 때 User, Group, Other의 권한이 있어야 접근이 가능합니다. 이 권한을 보여주는 것이 rwxrwxrwx
와 같은 상태입니다.
위의 ls -l
출력 내용에서, rwxrwxrwx
는 권한 상태를 보여줍니다. 앞에서 부터 문자 3개 rwx
는 Owner의 권한, 그다음 문자 3개 rwx
는 Group의 권한, 그 다음 문자 3개 rwx
는 Other의 권한입니다.
그리고 권한의 r
은 read, w
는 write, x
는 execute
(실행가능)를 의미합니다.
파일에 각 모드마다 권한을 다르게 설정해보겠습니다.
chmod$ chmod u=rwx,g=rx,o=r file1.txt
위의 명령어로 user
에 rwx(read, write, execute), group
에 rx(read, write), other
에 r(read) 권한을 file1.txt
에 부여하였습니다.
ls -l
로 확인해보시면 설정한대로 변경된 것을 볼 수 있습니다.
chmod$ ls -l
total 16
-rwxr-xr-- 1 js js 6 3월 10 16:02 file1.txt
위의 명령어 $ chmod u=rwx,g=rx,o=r file1.txt
는 다음과 같이 간결하게 사용할 수도 있습니다.
chmod$ chmod 754 file1.txt
chmod$ ls -l
total 16
-rwxr-xr-- 1 js js 6 3월 10 16:02 file1.txt
754
는 u=rwx,g=rx,o=r
를 의미합니다. 7은 user, 5는 group, 4는 other의 권한입니다. 그리고 각 숫자는 다음 권한들의 조합(합)입니다.
- 4는 read를 의미
- 2는 write를 의미
- 1은 execute를 의미
- 0은 아무 권한도 없는 것을 의미
그래서 7은 read, write, execute(4+2+1) 권한들의 조합이고, 6은 read, write(4+2+0) 권한들의 조합입니다.
하위 폴더 전체 권한 변경(Recursive)
폴더 전체의 권한을 변경해주려면 -R
옵션을 사용하면 됩니다. Recursive하게 폴더 아래의 하위 폴더들 까지도 모두 적용됩니다.
$ chmod -R 755 chmod/
확인해보면 폴더 내부의 모든 파일의 권한이 755
로 변경된 것을 확인할 수 있습니다.
$ ls -l chmod/
total 16
-rwxr-xr-x 1 js js 6 3월 10 16:02 file1.txt
-rwxr-xr-x 1 js js 6 3월 10 16:02 file2.txt
-rwxr-xr-x 1 js js 6 3월 10 16:02 file3.txt
-rwxr-xr-x 1 js js 6 3월 10 16:02 file4.txt
특정 권한 추가/제거
User의 execute 권한만 빼고 싶다면 간단히 u-x
를 사용하면 됩니다. 다른 권한들은 건드리지 않고 user의 x권한만 뺀다는(-) 의미입니다.
$ ls -l
-rwxr-xr-x 1 js js 6 3월 10 16:02 file1.txt
$ chmod u-x file1.txt
$ ls -l
-rw-r-xr-x 1 js js 6 3월 10 16:02 file1.txt
반대로 권한을 부여하려면 u+x
를 입력하면 됩니다. 다른 권한은 건드리지 않고 user의 x권한만 더한다는(+) 의미입니다.
$ ls -l
-rw-r-xr-x 1 js js 6 3월 10 16:02 file1.txt
$ chmod u+x file1.txt
$ ls -l
-rwxr-xr-x 1 js js 6 3월 10 16:02 file1.txt
group, other도 모두 비슷하게 사용하시면 됩니다. 그리고 위에서는 하나의 권한만 제거, 추가하였지만 다음처럼 여러개의 권한을 빼거나 더할 수 있습니다. 예를들어, group에서 read와 write를 제거하려면 g-rw
을 사용하면 됩니다.
$ ls -l
-rwxr-xr-x 1 js js 6 3월 10 16:02 file1.txt
$ chmod g-rx file1.txt
$ ls -l
-rwx---r-x 1 js js 6 3월 10 16:02 file1.txt
모든 타입에 권한을 부여하기
모든 User, Group, Other 들의 권한을 한번에 변경하려면 a=
를 사용하면 됩니다. a=rwx
는 모든 그룹에 rwx 권한을 설정하라는 의미입니다.
$ chmod a=rwx file1.txt
$ ls -l
-rwxrwxrwx 1 js js 6 3월 10 16:02 file1.txt