Linux - chmod 명령어 사용 방법 (권한, 모드 변경)

JS · 10 Mar 2019

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, xexecute(실행가능)를 의미합니다.

파일에 각 모드마다 권한을 다르게 설정해보겠습니다.

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

754u=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
댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha