본문 바로가기

Linux

[Linux] 권한 및 그룹 설정

#chgrp [옵션] 그룹명 파일명

- 리눅스 시스템의 모든 파일과 디렉터리에는 접근권한(permission)과 소유권(ownership)이 부여된다.

- 명령어 'ls -l'은 파일 속성을 나타낸다.

 

속성값 의미
- rw-rw-r--

 ∙ 파일  허가권(permission)

 ∙ 파일 유형(-)과 파일접근 권한(-rw-rw-r--)으로 구성

1  물리적 파일 연결 개수
homeshake  파일 소유자명(User Ownership
hoemeshake  파일 소유 그룹명(Group OwnerShip)
53 파일 크기(바이트 단위)
2020-01-01 파일이 마지막으로 변경된 시간
TST 파일명

- 속성 필드 중 첫 번째 필드는 파일이나 디렉터리의 허가권(permission), 세 번째와 네 번째 필드는 파일이나 디렉터리의 소유권(ownership)을 나타낸다.

- 파일의 허가권이나 소유권을 설정하는 명령어는 chmod, chown, chgrp, umask 등이 있다.

 


1. 소유권(Ownership)과 관련 명령어

- 소유권은 임의의 파일 또는 디렉터리에 대해 사용자와 그룹들의 소유 권한을 나타낸 것이다.

- 그룹은 사용자들의 시스템 운영 특성에 따라 묶어 놓은 것으로, 같은 그룹에 속한 사용자들은 파일 또는 디렉터리에 대해 동일한 소유권과 작업 권한을 갖는다.

 

(1) 명령어 chown

  1) 명령어 chown는 파일과 디렉터리의 사용자 소유권과 그룹 소유권을 변경한다.

형식

옵션 설명
-R  하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경

 

[ex1] 디렉터리 homeshake의 모든 파일과 하위 디렉터리의 소유권을 root로 변경한다.

 -> #chown -R root homeshake

[ex2] 파일 TST의 그룹 소유권은 root로 변경한다.

 -> #chown :root TST

 

(2) 명령어 chgrp

 1) 명령어 chgrp은 change group의 약자로 파일이나 디렉터리의 그룹 소유권을 변경한다.

 2) 명령어 chown은 소유자와 소유 그룹을 모두 변경할 수 있지만, chgrp은 그룹 소유권만을 변경한다.

형식

옵션 설명
-R  하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 그룹 소유권 변경

 

[ex1] 파일 TST의 그룹 소유권은 homeshake로 변경한다.

  -> #chgrp homeshake TST

 

2. 허가권(permission)과 관련 명령어

- rw-rw-r-- 파일유형(-)과 파일 접근 권한(rw-rw-r--)을 나타냄

 

1) 명령어 'ls -l'으로 파일 유형과 허가권을 알 수 있다.

2) 파일 허가권의 첫 번째 자리는 파일 유형을 기호로 정의한다.

3) 파일은 일반 파일, 디렉터리 파일, 특수파일로 나뉜다.

4) 명령어 ls -l /dev를 실행하면 파일 유형이 'b'나 'c'인 파일들을 확인할 수 있다.

기호 파일 유형
-  일반 파일
d  디렉터리 파일
특수파일 b

 ∙ 블록 단위로 읽고 쓰는 블록 장치 특수 파일

 ∙ 블록장치 : 하드디스크, 플로피디스크, CD/DVD 등의 저장 장치

c

 ∙ 문자 단위로 읽고 쓰는 문자 장치 특수 파일

 ∙ 문자 장치로는 마우스, 키보드, 프린터의 입출력 장치

l

 ∙ 기호적 링크로 바로가기 아이콘 역할 수행

 ∙ 연결되어 있는 파일과 실제 파일은 다른 곳에 존재

p  파이프
s  소켓

5) 파일 허가권의 두 번째 자리에서 열 번째 자리는 파일 접근 권한을 정의한다.

6) 리눅스는 사용자 별로 파일 권한을 부여한다.

7) 파일 사용자는 파일 소유 자(owner), 그룹 소속자(group), 그리고 기타 사용자(others 또는 public)로 구분한ㄷ.ㅏ

8) 파일 권한은 읽기(read), 쓰기(wrtie), 실행(execute)이 있다.

9) 읽기, 쓰기 또는 실행의 접근 제한 표시는 하이픈(-)으로 나타낸다.

10) 사용자별 권한은 기호 모드(symbolic mode) 또는 8진수 숫자 모드(numeric mode)로 표시한다.

  사용자 권한 그룹 권한 기타 사용자 권한
기호모드 r w x r w x r w x
8진수 숫자모드 4 2 1 4 2 1 4 2 1

11) TST.txt의 기호 권한 'rw-rw-r--'는 숫자 권한으로 '664'이다. 즉, 파일의 소유자와 그룹 사용자들은 TST.txt 파일에 대해 읽고 쓰기가 가능하며 실행 권한은 없다. 그 외 사용자들은 파일 TST.txt에 대해 읽기 기능만 갖는다.

  사용자 권한 그룹 권한 기타 사용자 권한
기호모드 r w - r w - r - -
8진수 숫자모드 4 2 0 4 2 0 4 0 0
6 6 4

12) 권한은 파일 유형에 따라 다르게 정의된다.

  일반 파일 디렉터리 파일 특수 파일
읽기(r)  파일 내용 읽기  디렉터리 내의 파일 목록 읽기  read()로 파일 읽기
쓰기(w)  파일 수정/삭제  디렉터리 내 파일 생성/삭제 가능  write()로 파일 내용 변경
실행(x)  파일 실행  cd 명령을 이용하여 디렉터리로 이동 가능  권한 의미 없음

 

(1) 명령어 chmod

 1) 파일이나 디렉터리의 접근 허가권을 변경하는 명령어이다.

옵션 설명
-R  하위 디렉터리에 포함되어 있는 모든 디렉터리 및 파일의 권한 변경

2) 권한 변경은 '숫자 모드' 또는 기호 모드'가 있다.

 

(2) 명령어 umask

 1) 명령어 umask는 새로 생성되는 파일이나 디렉터리의 기본 허가권 값을 지정한다.

 2) 파일의 기본 권한은 666, 디렉터리의 기본 권한은 777이다. 명령어 umask는 디폴트 권한 값을 변경한다.

옵션 설명
- S umask 값을 문자로 표기

3) 파일이나 디렉터리 생성시 디폴트 권한 값에서 설정한 umask 값을 뺀 값을 기본 허가권을 설정한다.

    예를 들어, umask가 022인 경우 디폴트 파일 권한은 644(666-022), 디폴트 디렉터리 권한은 755(777-022)으로 변경된다.

4) 아래 그림에서 기본 umask 값은 0002이다. 여기서 첫 번째 자리의 0은 특수 권한 설정 값이다. 이와 같이 특수 권한이 부여되어 있지 않는 일반 파일의 권한은 664(0666-0002)이며 디렉터리 권한은 775(0777-0002)이다.

6) umask -S는 umask 값을 문자로 나타낸다.

 

 

3. 특수 권한

(1) SetUID와 SetGID

 1) 프로세스가 실행되는 동안 해당 프로세스의 root 권한을 임시로 가져오는 기능이다.

 2) 프로세스가 사용자보다 높은 수준의 접근을 요구할 때 파일 접근 제한 때문에 원활한 기능을 제공할 수 없기 때문에 이러한 문제점을 해결하기 위한 방법이다.

 3) SetUID의 경우 사용자가 사용할 때만 소유자 권한으로 파일을 실행시키고, SetGID의 경우 사용자가 사용할 때만 그룹 권한으로 파일을 실행한다.

  ∙ SetUID는 프로그램을 실행하는 동안 프로세스는 파일의 소유자와 같은 권한으로 실행된다.

  ∙ SetGID는 프로그램을 실행하는 동안 프로세스는 파일의 그룹과 같은 권한으로 실행된다.

  ∙ SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가진다.

4) 특수 권한의 절대적인 표기 방법은 4자리로 나타낸다.

  코드 절대값 설명
SetUID s 4000 프로세스 실행 당시 UID로 설정
SetGID s 2000 프로세스 실행 당시 GID로 설정
Sticky bit t 1000 실행 후에도 메모리를 점유하도록 설정

5) SetUID 소문자 's'와 대문자 'S'

  ∙ 실행 파일에 setuid를 설정하면 소문자 's'가 되고 정상적으로 실행할 수 있다.

  ∙ 실행 파일이 아닌데 setuid를 설정하면 대문자 'S'가 되고 실행할 수 없다.

 

(2) Sticky bit

  1) 일반적으로 공용 디렉터리를 사용할 때 sticky bit를 설정하여 사용한다.

  2) Sticky bit가 살정되어 있는 디렉터리 안의 내용은 해당 파일의 소유자나 root만이 변경이 가능하여 공용 디렉터리라도 권한의 제약을 두어 다른 사용자들의 파일을 보호하기 위한 목적으로 만든 것이다.

  3) 사용자 권한을 지정하기 어려운 프로그램들이 일시적으로 특정 디렉터리에 파일을 생성하고 삭제하도록 이용된다.

  4) 특정 응용 프로그램이 다른 응용 프로그램에서 생성한 파일을 삭제하지 못하는 권한 설정을 한다.

  5) 설정된 디렉터리에는 누구든 접근 가능하고 파일을 생성할 수 있다.

  6) 생성된 sticky bit 파일을 삭제 시에는 소유자(파일 생성자)와 관리자만 지울 수 있다.

   사용자는 자신의 소유가 아닌 파일을 삭제할 수 없다.

   ∙ sticky bit가 적용된 디렉터리 내에 파일을 생성하는 것은 누구나 가능하지만 삭제는 본인과 관리자만 가능하게 된다.

   ∙ 일반적으로 sticky bit로 설정되는 디렉터리는 /tmp 안에 생성한다.

 

4. 디스크 쿼터(Disc Quota)

1) 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것이다.

  보통 블록 단위의 용량 제한과 inode의 개수를 제한한다.

2) 사용자나 그룹이 가질 수 있는 inode의 수, 사용자나 그룹에게 할당된 디스크를 블록수를 제한한다.

3) 쿼터는 사용자별, 파일 시스템별로 동작된다.

4) 그룹 단위로도 용량을 제한할 수 있으며 웹호스팅 서비스를 하는 경우에 유용하다.

 

 

 

'Linux' 카테고리의 다른 글

[Linux] 리눅스 개요 정리  (0) 2020.03.02