리눅스마스터1급 : 리눅스 파일의 퍼미션 설정하는 법
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,349 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : 리눅스 파일의 퍼미션 설정하는 법
퍼미션
① 퍼미션(permission)
퍼미션은 파일에 관한 사용자, 그룹 및 다른 사용자(이하 “일반 다른 사용자” 또는 “타인”이라고도 기술한다)의 접근 권한, 즉 읽기, 쓰기 및 실행의 권한에 대한 허가 여부, SetUID, SetGID, StickyBit 및 속성에 대한 설정을 모두 포함하는 의미이다.
이러한 퍼미션 설정은 다중 사용자 운영체제에서 파일의 보호를 위해 반드시 필요한 것이다.
그리고 시스템 관리자는 파일의 소유권을 가지는 사용자나 그룹을 설정 및 변경할 수 있다.
파일의 퍼미션 종류에는 기본적으로 아래와 같이 3개의 종류가 있다.
그리고 파일에 대한 접근 권한은 이들의 조합으로 결정된다.
동일한 퍼미션이 파일에 적용될 때와 디렉토리에 적용될 때에 일반적인 의미는 같지만 실제 적용되어 나타나는 결과적인 의미는 다르다.
퍼미션 | 일반적인 의미 | 파일 | 디렉토리 |
r | 읽기(read) 권한 | 파일을 읽을 수 있음 | 디렉토리의 내용을 볼 수 있음 |
w | 쓰기(write) 권한 | 파일을 저장 및 삭제할 수 있음 | 디렉토리에 파일을 저장하거나 디렉토리 이름변경 및 삭제 등이 가능함 |
x | 실행(execution) 권한 | 파일을 실행할 수 있음 | 디렉토리에 접근할 수 있음(cd 명령으로 접근 가능. ls로 리스트는 읽기 권한이 있어야 함) |
그리고 이러한 퍼미션으로 2가지의 추가적인 설정을 할 수 있다.
퍼미션 | 일반적인 의미 | 파일 | 디렉토리 |
s | SetUID, SetGID 권한 | 파일 소유자(SetUID), 그룹 소유자(SetGID)의 권한으로 실행함 | |
t | Sticky Bit 권한 | 공유 디렉토리로 사용됨 |
파일의 퍼미션을 정확하게 알기 위해서는 2 진수, 8 진수, 10 진수의 관계를 정확하게 이해해야 하고, 이것이 상기의 퍼미션에서 어떤 의미를 가지는지 알아야 한다.
2 진수 | 8 진수 | 표시 퍼미션 | 의 미 |
000 | 0 | --- | 아무런 권한이 없음 |
001 | 1 | --x | 실행 권한만 있음 |
010 | 2 | -w- | 쓰기 권한만 있음 |
011 | 3 | -wx | 쓰기와 실행 권한만 있음 |
100 | 4 | r-- | 읽기 권한만 있음 |
101 | 5 | r-x | 읽기와 실행 권한만 있음 |
110 | 6 | rw- | 읽기와 쓰기 권한만 있음 |
111 | 7 | rwx | 읽기, 쓰기 및 실행 권한이 있음 |
또한 상기한 바와 같이 퍼미션은 파일에 관한 사용자, 그룹 및 다른 사용자의 접근 권한을 의미하는데, 이들의 의미는 다음과 같다.
종류 | 의미 |
소유자(Owner) | 파일이나 디렉토리를 처음 만들거나 소유권을 가진 사람 |
그룹(Group) | 사용자가 속한 그룹 및 그 그룹에 포함된 사람들 |
다른 사용자(Public) | 소유자 외에 현재 사용자 계정을 가진 모든 사람 |
② 소유권
리눅스의 파일은 사용자와 그룹이 소유권을 가지도록 설정된다.
사용자가 처음으로 파일을 생성하면 그 파일을 만든 사용자와 그 사용자가 속해 있는 그룹이 그 파일의 소유자가 된다.
그렇지만 이러한 파일의 소유권도 chown 명령을 통해 변경할 수 있다.
다음과 같이 “ls –l” 명령에 의해 test1 파일의 정보를 출력하였는데, 여기에서 세 번째와 네 번째 필드가 이 파일의 소유권에 관한 정보를 나타낸다.
세 번째가 이 파일에 대한 소유권을 가진 사용자 정보이고 세 번째가 이 파일에 대한 소유권을 가진 그룹 정보이다.
|
|
|
| [root@SUK121 ~]# ls -l ./test1 -rw-r--r-- 1 root root 0 9월 20 12:32 ./test1 [root@SUK121 ~]# |
|
|
|
|
③ 허가권
보다 정확한 설명을 위하여 아래와 같이 “ls –l” 명령의 결과를 보자.
|
|
|
| [root@SUK121 ~]# ls -l 합계 76 -rw------- 1 root root 3275 4월 25 01:38 anaconda-ks.cfg drwxr-xr-x 7 root root 4096 4월 25 01:32 bin drwxr-xr-x 2 root root 4096 4월 25 01:32 conf -rw-r--r-- 1 root root 30955 4월 25 01:38 install.log -rw-r--r-- 1 root root 5303 4월 25 01:36 install.log.syslog drwxr-xr-x 2 root 399 4096 9월 20 01:31 test -rw-r--r-- 1 root root 15 9월 20 12:32 test1 [root@SUK121 ~]# |
|
|
|
|
위의 예에서 각 행들의 첫 번째 부분에 퍼미션(???? -rw-r-xr-x)이 설정되어 있는 것을 볼 수 있다.
이 부분을 설정(변경)하기 위하여 chmod 명령어를 사용한다.
우선 이 부분의 정확한 의미를 설명하도록 한다.
위의 예에서 test1 이라는 파일의 정보는 다음과 같다.
|
|
|
| -rw-r--r-- 1 root root 15 9월 20 12:32 test1 |
|
|
|
|
∙파일 퍼미션 : -rw-r-xr-x
∙파일명 : test1
∙파일소유자 : root
∙파일그룹소유자 : root
∙파일 크기 : 15 bytes
위의 정보에서 퍼미션 부분을 보면 다음과 같다.
이 부분은 10비트로 이루어져 있으며, 파일유형, 소유자 권한, 그룹소속자 권한 및 일반다른사용자 권한 부분으로 나눌 수 있다.
- |
| r w - |
| r - x |
| r - x |
파일유형 |
| 소유자 권한 |
| 그룹소속자 권한 |
| 일반다른사용자 권한 |
∙파일유형 : 이 위치에는 다음과 같은 문자들이 설정될 수 있으며 문자들의 의미는 다음과 같다.
- : 일반 파일임을 의미함
b : 블럭 구조의 특수 파일(Block Special File)을 의미함(???? /dev/sda)
c : 입출력에 사용되는 특수 파일(Character Special File)을 의미함(???? /dev/console)
d : 디렉토리를 의미하며, 디렉토리도 하나의 특수 파일로 취급함
l : 심볼릭 링크 파일(Link File)을 의미함
p : 파이프 파일(Pipe File)을 의미함
s : 소켓 파일(Socket File)을 의미함
∙소유자 권한 : 이 위치에는 다음과 같이 8가지의 경우로 설정될 수 있으며 그 각각의 의미는 다음과 같다.
위의 예에서 rw- 로 설정되어 있으므로 파일 소유자는 파일에 대해 읽기와 쓰기 권한이 있음을 알 수 있다.
--- : 파일의 소유자에게 아무런 권한이 없음(8 진수 표시 : 0, 2 진수표시 : 000)
--x : 파일의 소유자에게 실행 권한만 있음(8 진수 표시 : 1, 2 진수표시 : 001)
-w- : 파일의 소유자에게 쓰기 권한만 있음(8 진수 표시 : 2, 2 진수표시 : 010)
-wx : 파일의 소유자에게 쓰기와 실행 권한만 있음(8 진수 표시 : 3, 2 진수표시 : 011)
r-- : 파일의 소유자에게 읽기 권한만 있음(8 진수 표시 : 4, 2 진수표시 : 100)
r-x : 파일의 소유자에게 읽기와 실행 권한만 있음(8 진수 표시 : 5, 2 진수표시 : 101)
rw- : 파일의 소유자에게 읽기와 쓰기 권한만 있음(8 진수 표시 : 6, 2 진수표시 : 110)
rwx : 파일의 소유자에게 읽기, 쓰기 및 실행 권한이 있음(8 진수 표시 : 7, 2 진수표시 : 111)
∙그룹소속자 권한 : 이 위치에는 상기의 소유자 권한과 같이 8가지의 경우로 설정될 수 있으며, 그 의미도 동일하다.
위의 예에서 r-x 로 설정되어 있으므로 그룹에 소속된 사용자들에게 파일에 대해 읽기와 실행 권한이 있음을 알 수 있다.
--- : 파일의 그룹소속자에게 아무런 권한이 없음(8 진수 표시 : 0, 2 진수표시 : 000)
--x : 파일의 그룹소속자에게 실행 권한만 있음(8 진수 표시 : 1, 2 진수표시 : 001)
-w- : 파일의 그룹소속자에게 쓰기 권한만 있음(8 진수 표시 : 2, 2 진수표시 : 010)
-wx : 파일의 그룹소속자에게 쓰기와 실행 권한만 있음(8 진수 표시 : 3, 2 진수표시 : 011)
r-- : 파일의 그룹소속자에게 읽기 권한만 있음(8 진수 표시 : 4, 2 진수표시 : 100)
r-x : 파일의 그룹소속자에게 읽기와 실행 권한만 있음(8 진수 표시 : 5, 2 진수표시 : 101)
rw- : 파일의 그룹소속자에게 읽기와 쓰기 권한만 있음(8 진수 표시 : 6, 2 진수표시 : 110)
rwx : 파일의 그룹소속자에게 읽기, 쓰기 및 실행 권한이 있음(8 진수 표시 : 7, 2 진수표시 : 111)
∙일반 다른 사용자 권한 : 이 위치에는 상기의 소유자 권한과 같이 8가지의 경우로 설정될 수 있으며, 그 의미도 동일하다.
위의 예에서 r-x 로 설정되어 있으므로 일반 다른 사용자들에게 읽기와 실행 권한이 있음을 알 수 있다.
--- : 일반 다른 사용자에게 아무런 권한이 없음(8 진수 표시 : 0, 2 진수표시 : 000)
--x : 일반 다른 사용자에게 실행 권한만 있음(8 진수 표시 : 1, 2 진수표시 : 001)
-w- : 일반 다른 사용자에게 쓰기 권한만 있음(8 진수 표시 : 2, 2 진수표시 : 010)
-wx : 일반 다른 사용자에게 쓰기와 실행 권한만 있음(8 진수 표시 : 3, 2 진수표시 : 011)
r-- : 일반 다른 사용자에게 읽기 권한만 있음
(8 진수 표시 : 4, 2 진수표시 : 100)
r-x : 일반 다른 사용자에게 읽기와 실행 권한만 있음(8 진수 표시 : 5, 2 진수표시 : 101)
rw- : 일반 다른 사용자에게 읽기와 쓰기 권한만 있음(8 진수 표시 : 6, 2 진수표시 : 110)
rwx : 일반 다른 사용자에게 읽기, 쓰기 및 실행 권한이 있음(8 진수 표시 : 7, 2 진수표시 : 111)
④ 파일 권한
상기한 바와 같이 파일 및 디렉토리에 대해 파일의 소유자, 그룹 소속자 및 일반 다른 사용자들을 구분하여, 각각에 대해 읽기, 쓰기 및 실행 권한을 부여하는 것이 가능하다.
이렇게 파일에 대한 권한을 부여 받으면 부여받은 권한에 따라 파일에 대한 접근이 가능하다.
이러한 파일이나 디렉토리에 대한 권한의 설정 및 변경을 위해서는 chmod 명령을 사용한다.
그리고 파일에 대한 사용자 및 그룹의 소유권은 chown 명령을 사용하여 설정 및 변경할 수 있다.
⑤ 새로운 모드 지정 방법
위의 관계들을 정확하게 이해했다면 chmod로 퍼미션을 설정하는 방법을 알게 된 것이다.
지금까지 파일의 퍼미션의 의미에 대해서 알아보았으므로 이제 파일의 퍼미션을 설정하는 방법에 대해서 설명한다.
파일의 퍼미션을 설정하는 방법에는 8 진수의 숫자로 지정하는 방법(절대 모드 지정 방법)과 특정 문자를 이용한 방법(상대 모드 지정 방법)의 두 가지가 있다.
∙절대 모드 지정 방법
첫 번째는 8 진수의 숫자로 퍼미션을 지정하는 방법이다.
상기한 바와 같이 각각의 퍼미션을 8 진수의 0번부터 7번까지의 숫자로 기술할 수 있는데, 읽기는 4, 쓰기는 2 그리고 실행은 1인데, 이들이 모두 없으면 0이고 이들을 모두 더하면 7이며 이들 숫자를 조합하여 더하면 파일에 대한 퍼미션이 정해진다.
그리고 이 숫자들은 파일의 소유자 권한, 그룹소속자 권한 및 일반 다른 사용자 권한의 순서로 기술하면 각각에 대한 권한이 설정된다.
즉, 100단위, 10단위 및 1단위의 위치에 각각의 권한을 설정할 수 있다.
절대 모드 지정 방법
접근 주체 | 허가 | 접근 유형 | 절대 모드 지정 |
파일 소유자 | 읽기 | r | 400 |
쓰기 | w | 200 | |
실행 | x | 100 | |
그룹 소속자 | 읽기 | r | 40 |
쓰기 | w | 20 | |
실행 | x | 10 | |
일반 다른 사용자 | 읽기 | r | 4 |
쓰기 | w | 2 | |
실행 | x | 1 |
다음은 퍼미션 755로 설정(파일 소유자에게 읽기・쓰기・실행, 그룹 소속자에게 읽기・실행, 일반 다른 사용자에게 읽기・실행 권한을 부여)되어 있었던 test1 파일의 퍼미션을 chmod 명령어를 이용하여 511으로 설정(파일 소유자에게 읽기・실행, 그룹 소속자에게 실행, 일반 다른 사용자에게 실행 권한을 부여)을 변경한 것이다.
|
|
|
| [root@SUK121 ~]# ls -l test1 -rwxr-xr-x 1 root root 15 9월 20 16:55 test1 [root@SUK121 ~]# chmod 511 test1 [root@SUK121 ~]# ls -l test1 -r-x--x--x 1 root root 15 9월 20 16:55 test1 [root@SUK121 ~]# |
|
|
|
|
관련자료
-
이전
-
다음