강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

파일과 디렉토리의 퍼미션(permission) 정복하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

파일과 디렉토리의 퍼미션(permission) 정복하기

 

 

 

이번에 설명할 내용은 파일의 퍼미션과 파일의 속성에 대하여 알아볼 것입니다.

 

일반적으로 파일의 성격을 규정하고 제한하는 방법은 여러가지가 있습니다. 이런 파일의 성격중에서 우리에게 가장 친숙한 것은 퍼미션입니다.

 

하지만, 우리 같은 서버관리자들은 파일의 퍼미션뿐아니라 파일의 속성을 알아야하며 거기에 SetUID, SetGID, StickyBit에 대해서 모두 알아야합니다. 그래야만 파일에 대한 성격을 모두 파악하고 제대로 관리할 수 있습니다. , 그럼 파일의 퍼미션부터 알아보도록 하겠습니다.

 

필자는 파일과 디렉토리에 대한 퍼미션(Permission)이라는 것에 대하여 정확하고 분명하게 설명하고자 합니다. 그만큼 중요하기 때문입니다.

 

, 이 부분에 대한 설명이 좀 길더라도 하나하나씩 차례대로 짚어가면서 실무적인 관점에서 이해하시기 바랍니다.

 

수많은 책과 강좌에서 파일의 퍼미션에 대한 설명을 이미 몇번 접해 보셨으리라 생각합니다.  물론 완벽하게 이해한 분들도 많이 계시겠지만 아직 퍼미션에 대한 이해가 조금이라도 부족하신 분이라면 이번에 필자에게 기회를 주시고 이번 장의 설명내용을 정확하고 분명하게 이해하도록 하십시요.

 

chmod 명령어는 특정 파일 또는 디렉토리의 퍼미션(permission)을 변경하는 명령어입니다.

 

 

가장 기본적인 리눅스명령어로서 리눅스 사용자라면 누구나 알고 있어야하는 명령어입니다.

 

 

퍼미션이란 특정 파일이나 디렉토리에 대하여 읽기, 기록하기, 삭제하기등의 권한을 설정해 놓은 것으로 다중사용자 운영체제(Multi-User Operating System)에서 파일의 접근권한과 보호등을 위하여 반드시 필요한 것입니다.

 

또한 퍼미션은 리눅스뿐아니라 UNIX, Solaris, AIX, FreeBSD등의 운영체제에서도 같은 목적으로 사용할 수 있습니다.  특히, (WWW)으로 홈페이지를 보여 줄 때에 웹문서파일의 퍼미션설정이 되어있지 않아서 "이 문서는 허용되지 않았습니다."라는 웹페이지 에러를 자주 접하곤 합니다.

 

이에대한 원인은 거의 대부분 웹페이지 파일의 퍼미션이 허용되어있지 않기 때문입니다.

 

홈페이지를 만들어서 리눅스나 유닉스서버등에 제작한 홈페이지파일을 서버로 업로드(Upload)한 후에 파일의 퍼미션설정하는 예를 많이 보셨으리라 생각합니다. 

 

이는 다른 일반 사용자들에게 웹문서를 보여주기 위하여 퍼미션을 적절히 설정하는 것입니다.

 

필자가 설명하는 이 chmod명령어의 설명을 잘 이해하시고 파일의 퍼미션을 목적에 맞게 설정하는 방법을 확실하게 익히시기 바랍니다.

 

파일(디렉토리)의 퍼미션(권한, permission) 종류에는 아래와 같이 5가지가 있습니다. 

 

아래 사항은 매우 중요하므로 꼭 기억해 두시기 바라며 특히 동일한 퍼미션이 파일에 적용될때와 디렉토리에 적용될 때의 의미가 다르다는 것을 정확하게 이해하시기 바랍니다.

 

 

퍼미션

일반적인의미

파일

디렉토리

r

읽기(read)권한

파일을 읽을 수 있음

디렉토리의 내용을 볼수 있음

(ls로 파일리스트 확인가능)

w

쓰기(write)권한

파일에 저장,삭제할 수 있음

디렉토리에 파일저장,디렉토리이름변경,삭제등 가능

x


실행(execution)권한

파일을 실행할 수 있음

디렉토리에 접근할 수 있음(cd로 접근가능,ls로 리스트는 불가)

s

SetUID, SetGID권한

파일소유자(SetUID),그룹소유자(SetGID)의 권한으로 실행함

t

Sticky Bit권한

공유디렉토리로 사용됨

 

위의 예를 보시면 같은 권한일 경우에도 파일에 대한 의미와 디렉토리에 대한 의미에 있어서 다소 차이가 있음을 알 수 있습니다.

 

 거듭 잔소리해서 죄송하지만 위의 의미를 정확하게 이해하지 못한다면 chmod명령어의 정확한 사용과 실무활용이 어렵다는 점을 아셔야합니다.

 

가능한 옵션들


        -c :
올바르게 변경된 파일들만 -v옵션을 적용하여 자세히 보여준다.

        -f : 가능한 불필요한 메시지를 보여주지 않고 간략하게 보여준다.

        -v : 실행과정을 자세하게 보여준다.

        -R : 디렉토리와 그안에 존재하는 서브디렉토리들까지 모두 적용한다.

 

파일의 퍼미션을 정확하게 공부하기 위해서는 2진수, 8진수, 10진수의 관계를 정확하게 이해하셔야 합니다. 

 

꼭 필요한 것은 아니지만 정확한 공부를 위하여 익혀두시기 바랍니다.

 

2진수

8진수

표시되는 퍼미션

의미하는 내용

000

0

---

아무런 권한이 없음

001

1

--x

실행(eXecution)권한만 있음

010

2

-w-

쓰기(Write)권한만 있음

011

3

-wx

쓰기와 실행권한만 있음

100

4

r--

읽기(Read)권한만 있음

101

5

r-x

읽기와 실행권한만 있음

110

6

rw-

읽기와 쓰기권한만 있음

111

7

rwx

읽기,쓰기,실행권한이 있음

 

이외에도 2진수,8진수,10진수,16진수까지 정확하게 알고 있는 것이 좋습니다. 

 

적어도 위의 2진수와 8진수의 관계에 대해서는 정확하게 알고 계셔야 chmod에서 퍼미션 설정을 정확하게 할 수 있습니다.

 

보다 정확한 설명을 위하여 아래와 같이 "ls -l"의 결과를 보면서 계속 설명 드리겠습니다.

 

 

91ddb894e4609b2321fd0514be033a43_1649390844_0053.png
 

 

 

위의 예에서 각 행들의 첫번째 부분에 퍼미션(: -rw-r--r-x )설정이 되어 있는 것을 보실 수 있습니다.

 

이 부분을 설정하기 위하여 chmod라는 명령어를 사용합니다.

 

직접 설정하기에 앞서 이부분의 정확한 의미를 설명드리도록 하겠습니다.

 

위의 예에서 첫번째 pop_board.php라는 파일의 정보는 다음과 같습니다.

 

 

-rw-r--r-x    1 working  working      1308 Nov  8 17:42 pop_board.php

 

 - 파일퍼미션         : -rw-r--r-x

 - 파일명             : pop_board.php

 - 파일소유자         : working

 - 파일그룹소유자     : working

 - 파일사이즈         : 1308 byte

 - 파일최종변경일시   : 11 8 17시 42

 

위와 같은 정보에서 퍼미션부분을 보면 다음과 같습니다.

 

-        r       w      -       r      -      -      r      -      x

  --------    -----------------       ---------------      ---------------

  A.파일유형   B.소유자권한부분       C.그룹소속자권한부분  D.일반다른사용자권한부분

 

 

A. 파일유형


이 위치에는 다음과 같은 문자들이 설정될 수 있으며 문자들의 의미는 다음과 같습니다.

 

  -  : 일반파일임을 의미함.

  b  : 블럭구조의 특수파일(Block Special File)을 의미함.(, /dev/sda)

  c  : 입출력에 사용되는 특수파일(Character Special File)을 의미함.(, /dev/console)

  d  : 디렉토리(Directory)를 의미하며, 디렉토리도 하나의 특수파일로 취급됨.

  l  : 심벌릭링크파일(Link File)임을 의미함.

  p  : 파이프파일(Pipe)임을 의미함.

  s  : 소켓파일(Socket)임을 의미함.

  

 

 

B. 소유자권한부분

 

이 위치에는 다음과 같이 8가지의 경우로 설정될 수 있으며 그 각각의 의미는 다음과 같습니다.

  ---  : 파일의 소유자에게 아무런 권한이 없음(8진수표시:0, 2진수표시:000)

  --x  : 파일의 소유자에게 실행(eXecution)권한만 있음(8진수표시:1, 2진수표시:001)

  -w-  : 파일의 소유자에게 쓰기(write)권한만 있음(8진수표시:2, 2진수표시:010)

  -wx  : 파일의 소유자에게 쓰기와 실행권한만 있음(8진수표시:3, 2진수표시:011)

  r--  : 파일의 소유자에게 읽기(Read)권한만 있음(8진수표시:4, 2진수표시:100)

  r-x  : 파일의 소유자에게 읽기와 실행권한만 있음(8진수표시:5, 2진수표시:101)

  rw-  : 파일의 소유자에게 읽기와 쓰기권한만 있음(8진수표시:6, 2진수표시:110)

  rwx  : 파일의 소유자에게 읽기,쓰기,실행권한이 있음(8진수표시:7, 2진수표시:111)

 

 

위의 예에서는 이부분의 설정이  rw-로 되어 있으므로 working이라는 파일소유자에게 읽기와 쓰기권한이 있음을 알수가 있습니다.

 

 

 

C. 그룹소속자권한부분

 

이 위치에는 다음과 같이 8가지의 경우로 설정될 수 있으며 그 각각의 의미는 다음과 같습니다.

 

  ---  : 파일의 그룹소속자에게 아무런 권한이 없음(8진수표시:0, 2진수표시:000)

  --x  : 파일의 그룹소속자에게 실행(eXecution)권한만 있음
         (8
진수표시:1, 2진수표시:001)

  -w-  : 파일의 그룹소속자에게 쓰기(write)권한만 있음(8진수표시:2, 2진수표시:010)

  -wx  : 파일의 그룹소속자에게 쓰기와 실행권한만 있음(8진수표시:3, 2진수표시:011)

  r--  : 파일의 그룹소속자에게 읽기(Read)권한만 있음(8진수표시:4, 2진수표시:100)

  r-x  : 파일의 그룹소속자에게 읽기와 실행권한만 있음(8진수표시:5, 2진수표시:101)

  rw-  : 파일의 그룹소속자에게 읽기와 쓰기권한만 있음(8진수표시:6, 2진수표시:110)

  rwx  : 파일의 그룹소속자에게 읽기,쓰기,실행권한이 있음(8진수표시:7, 2진수표시:111)

 

위의 예에서 r--로 설정되어 있으므로 working이라는 그룹에 소속된 사용자들에게 읽기권한만 주어졌음을 알 수가 있습니다.

 

 

D. 일반다른사용자권한부분 (다음과 같은 8가지로 설정될 수 있음)

 

  ---  : 다른사용자들에게 아무런 권한이 없음(8진수표시 : 0, 2진수표시 : 000)

  --x  : 다른사용자들에게 실행(eXecution)권한만 있음(8진수표시 : 1, 2진수표시 : 001)

  -w-  : 다른사용자들에게 쓰기(write)권한만 있음(8진수표시 : 2, 2진수표시 : 010)

  -wx  : 다른사용자들에게 쓰기와 실행권한만 있음(8진수표시 : 3, 2진수표시 : 011)

  r--  : 다른사용자들에게 읽기(Read)권한만 있음(8진수표시 : 4, 2진수표시 : 100)

  r-x  : 다른사용자들에게 읽기와 실행권한만 있음(8진수표시 : 5, 2진수표시 : 101)

  rw-  : 다른사용자들에게 읽기와 쓰기권한만 있음(8진수표시 : 6, 2진수표시 : 110)

  rwx  : 다른사용자들에게 읽기,쓰기,실행권한이 있음(8진수표시 : 7, 2진수표시 : 111)

 

 

위의 예에서 r-x로 설정되어 있으므로 일반 다른 사용자들에게 읽기와 실행권한이 있음을 알 수가 있습니다.

 

위의 관계들만 정확하게 이해된다면 chmod로 퍼미션을 설정하는 것은 다 배운것이나 다름 없습니다.

 

지금까지 파일의 퍼미션의 의미에 대해서 알아보았으므로 이제 파일의 퍼미션을 설정하는 방법에 대해서 설명하도록 하겠습니다.

 

, 파일의 퍼미션을 설정하는 방법에는 두가지방법이 있습니다.

 

첫번째 8진수의 숫자로 지정하는 방법입니다.

 

 

) chmod 755 a_file

    ==> 파일소유자에게 7 (2진수로는 111)의 권한 즉, rwx의 권한을 부여함.

    ==> 파일그룹소속자에게 5 (2진수로는 101)의 권한 즉, r-x의 권한을 부여함.

    ==> 다른사용자들에게 5 (2진수로는 101)의 권한 즉, r-x의 권한을 부여함.

 

이렇게 숫자로 지정을 하면 첫번째 숫자는 파일의 소유자권한, 두번째 숫자는 그룹소속자권한, 세번째 숫자는 다른사용자에 대한 권한을 각각 표시하게 됩니다.

 

두번째로는 특정문자를 이용한 퍼미션설정 방법입니다.

) chmod o+rw a_file

    ==> a_file에 대해 일반다른사용자들(others)에게 읽기(r, Read)권한과 쓰기(w, Write)권한을 부여함.

 

위와 같은 의미가 됩니다. , 특정문자로 사용하는 종류에는 다음과 같은 것들이 있습니다.

 

 . u : 소유자(user) 를 의미함

 . g : 그룹(group) 을 의미함

 . o : 다른사용자(others) 들을 의미함

 . a : 모두(all) 를 의미함(Default)

 

그리고 이 문자와 함께 "+"기호가 사용되면 "권한을 부여한다"라는 의미이며, "-"기호가 사용되면 "권한을 제거한다"라는 의미가 됩니다. 

 

, 위의 예(chmod o+rw a_file)는 이와 같이 해석이 된 것입니다. 이에 대한 예는 아래 사용예들을 보시면서 정확한 이해를 하시기 바랍니다.

 


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,801 개
  • 현재 접속자 :  185 명