Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

소유권과 허가권 본문

운영체제/Linux - CentOs

소유권과 허가권

세레프 2023. 3. 13. 09:19

 Linux는 서버를 운영하기위해 사용되는 운영체제이기에, 여러 사용자가 서버를 이용하게 된다. 그래서 사용자가 가지고 있는 권한을 구별함으로써, 보안의 강도를 높혀야 한다. 이때, 사용자의 권한은 소유권과 허가권으로 나눠진다.

 

파일/디렉토리의 속성

디렉토리와 파일의 속성

[유형][허가권]. [링크수] [소유자] [소유그룹] [수정일] [개체명]

  • 유형 : 데이터의 형태
유형 - d l b c
의미 일반파일 디렉토리 심볼릭 링크 블록장치(하드디스크) 문자장치(스케너)

 

  • 허가권 : 계정의 기능을 임의적으로  통제하여 사용할 수 있는 기능을 제한하는 권한

[소유자][그룹][제3자]

 3개의 구성으로 각각 3자리를 갖는다. 그래서 총 9자리로 구성되어 있으며, 각 자리에 r,w,x 순으로 출력이 된다.

퍼미션 종류 r w x
읽기 권한 쓰기 권한(생성/수정/삭제) 실행 권한

 

  • 링크 수 : 해당 파일/디렉토리에 심볼릭 링크가 얼마나 걸려있는 알려주는 링크의 갯수
  • 소유자와 소유그룹 : 파일/디렉토리의 소유권을 가지고 있는 계정과 그룹
  • 수정일 : 파일/디렉토리를 마지막에 수정한 날

 이때, 우리는 유형,허가권,링크수,소유자,소유그룹,수정일을 파일/디렉토리 정보라고 하며, 이것을 블럭 숫자로 변환한 것이 i-node번호이다.

 

소유권

 소유권 사용자가 파일이나 디렉토리에 대한 권한을 가질 수 있게하는 것으로, 다른 계정과의 권한을 구분하기 위해 사용한다. 즉, 어떤 사용자 계정이 파일이나 디렉토리에 소유권을 가지고 있다면, 그 파일과 디렉토리에 대해서는 다른 계정과 다른 권한을 가진다는 뜻이다. 

 

소유권 변경 명령어

  • chown [옵션] [사용자] [파일/디렉토리] : 파일/디렉토리의 사용자 소유권를 변경하는 명령어
  • chgrp [옵션] [그룹] [파일/디렉토리] :  파일/디렉토리의 그룹 소유권를 변경하는 명령어
  • chown [옵션] [사용자].[그룹] [파일/디렉토리] : 파일/디렉토리의 사용자와 그룹 소유권를 변경하는 명령어
옵션
-R :  하위디렉토리까지 소유권 변경 chown test1 file1 : file1의 UID를 test1으로 변경

chgrp test1 file1 : file1의 GID를 test1으로 변경

chown test2.test2 file2 : : file2의 UID를 test2로, GID를 test2로 변경

chown -R test3.test3 dir3 : dir3의 UID와 GID를 test3로 변경하며 dir3에 속해있는 데이터의 UID와 GID도 test3로 변경

 

허가권

 허가권사용자가 해당 파일이나 디렉토리를 접근하고 수정하고 삭제하며 실행할 수 있게 하는 권한을 주는 것으로, 허가권을 받을 수 있는 계정은 소유권을 가진 계정인 소유자, 소유권을가진 그룹인 계정, 소유권을 가지지 않은 계정으로 나눌 수 있다.

[소유자][그룹][제3자]

 위의 구조는 허가권의 구조로 각각 3개의 퍼미션(permittion)이 있으며, 소유자,소유그룹, 제3자는 각각 다른 허가권을 가질 수 있다. 예를 들면, "rw-r--r--"이라고 했을 때, 소유자는 읽고 쓰는 허가권을 그룹과 제 3자는 읽는 허가권만 가지고 있는 것이다. 

퍼미션 파일에서의 기능 디렉토리에서의 기능
r (read) 파일 내용 읽기 디렉토리 내의 파일/디렉토리 목록 출력
w (write) 파일 내용 쓰기 (생성/수정/삭제) 디렉토리 내에서 파일/디렉토리 생성/수정/삭제
x (execute) 파일 내용 실행 디렉토리 내로 진입권한

 이를 2진수로 표현해서 10진수로 나타내는 방법도 있다. "rw-r--r--"의 경우, 2진수로 바꾸면 "110 100 100"으로 바꿀 수 있으며, 계정의 종류에 따라 10진수로 변경하면 "6 4 4"가 된다. 이때, 퍼미션을 자리에 따라 10진수로 바꾸면 "r"= 4, "w"= 2, "x"= 1 인것을 확인 할 수 있다.

허가권 2진수 8진수
rw-r--r-- (파일의 기본값) 110 100 100 6 4 4
rwxr-xr-x (디렉토리의 기본값) 111 101 101 7 5 5
rw-rw-rw- (파일의 최대값) 110 110 110 6 6 6
rwxrwxrwx (디렉토리의 최대값) 111 111 111  7 7 7

 

 허가권은 umask를 기준으로 결정이 된다. umask파일과 디렉토리의 허가권을 결정할 때 사용되는 기준값으로, "umask"명령어를 통해 현재 적용중인 umask의 값을 확인할 수 있다.

 추가적으로 "umask [숫자]"를 통해 일시적으로 umask값을 변경할 수 있으며,  "/etc/bashrc"파일에서 영구 변경가능하다. 이때, 평범하게 생성되는 파일/디렉토리는 /etc/bashrc파일의 umask를 사용하지만, 계정 생성시 생성되는 홈 디렉토리에는 login.defs에 따로 저장되어 있는 다른 umask를 사용한다.

/etc/bashrc
/etc/login.defs
최대 허가권 - umask값을 이용하여 실제 허가권 기본값을 생성하는 과정

 

 허가권에는 일반적으로 r,w,x인 일반 허가권을 사용하지만, 특수한 경우에 사용되는 특수 허가권을 사용한다. 특수허가권이란 특수 권한 추가 설정해주는 것으로, 일반 실행 권한에 실행 권한이 있을경우 소문자로 출력되며, 없을경우 대문자로 출력된다.  

종류 기능 특징
Sticky bit  제 3자에게 쓰기 권한이 있는데도, 삭제는 해당 파일/디렉터리 소유자만 가능하게 하는 기능 -심볼 : t/T
- 8진수에서 "1"로 표현
-보안성강화
SetGID 1. 파일 실행시 실행자의 그룹 권한이 아닌 소유자 그룹 권한으로 실행

 2. 디렉터리 내에 생성되는 새로운 파일/디렉터리의 그룹을 모두 상위 디렉토리 그룹으로 고정
-심볼 : s/S
-8진수에서 "2"로 표현
-보안성약화
SetUID  파일 실행시 실행자 권한가 아닌 소유자 권한으로 실행 -심볼 : s/S 
-8진수에서 "4"로 표현
-보안성약화

 그렇다면 특수 허가권을 사용하는 이유는 무엇일까? 일단, "sticky bit"는 삭제는 소유자만 할 수 있게 함으로써, 제 3자가 사용한 뒤에 쓰지 못하게 하는 악의적인 삭제를 방어할 수 있다.

 "SetGID"나 "SetUID"같은 경우에는 소유자 권한을 사용해야 실행이 되는 명령어에 주로 사용이 되는데, 주로 root권한으로 실행할 때 사용된다.

 대표적인 예시가 "passwd"명령어이다. "passwd" 명령어같은 경우, /etc/shadow파일을 수정하는 것이기 때문에 일반 사용자는 해당 파일에 접근이 불가능하다 그래서 root 권한으로 passwd파일을 실행함으로써 /etc/shadow파일에 접근하는 것이다.

 

passwd 명령어 파일

 

 특수허가권를 8진수로 표현할 때, 일반허가권 앞에서 표현이 되며, 소유자에 "s"는 4, 그룹의 "s"는 2, 제 3자의 "t"는 1로 표현된다.

특수 허가권+일반 허가권 2진수 8진수
rwSr--r-T  101 110 100 100 5 6 4 4
rwsr-xr-t  101 111 101 101 5 7 5 5
rw-rwSrwT  011 110 110 110 3 6 6 6
rwsrwsrwt  111 111 111 111  7 7 7 7

 

 허가권 변경 명령어

  • chmod [변경사항] [파일/디렉토리] : 파일/디렉토리의 허가권을 변경사항에 따라 변경
변경사항 표현 예시
1. 8진수 표현 : 8진수에 따라 변경

2. [변경 대상자] [연산자(+,-,=)] [퍼미션] : 대상자의 허가권을 연산자에 맞춰서 퍼미션을 변경
chmod a+rwx file1 : file1 모든허가권에 rwx추가

chmod u-r,go+rx file1 : file1 허가권에서 소유자는 r을 제거, 그룹과 제 3자는 rx를 추가

chmod u-r+w,g=rw file1 : file1 허가권에서 소유자는 r을 제거, w를 추가, 그룹을 rw로 변환

chmod u=r,o=r file1 : file1 허가권에서 소유자는 r만, 제 3자는 r만 사용

chmod 666 file1 : file1 허가권을 rw-rw-rw로 변경

Comments