[2. 리눅스 운영 및 관리] 01 파일 시스템 관련 명령어 (1) - 권한 및 그룹 설정
System/Linux Master

[2. 리눅스 운영 및 관리] 01 파일 시스템 관련 명령어 (1) - 권한 및 그룹 설정



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

· ls -al 명령어로 파일 속성을 확인할 수 있다.


1
2
3
4
[kinew@localhost ~] $ ls -l
total 4
drwxrwxr-x.    2    kinew    kinew    6    Jan    28    22:59    KINEW
-rw-rw-rw-.    1    kinew    kinew    65   Jan    25    12:34    pettle.txt
cs



-rw-rw-rw-.    1    kinew    kinew    65    Jan    25    12:34    pettle.txt

           ①          ②      ③        ④       ⑤            ⑥                   ⑦


속성 값

의미

- rw-rw-rw-

  ㉠    ㉡

 · 파일 허가권(permission)

 · ㉠ : 파일 유형, ㉡ : 파일 접근 권한

1

 · 물리적 파일 연결 개수

kinew

 파일 소유자명(User Ownership)

kinew

 파일 소유 그룹명(Group Ownership)

65

 파일 크기(byte단위)

Jan 25 12:34

 파일이 마지막으로 변경된 시간

pettle.txt

 파일명



1. 소유권(Ownership)[각주:1] 관련 명령어

· 같은 그룹[각주:2]에 속한 사용자들은 파일 또는 디렉터리에 대해 동일한 소유권과 작업 권한을 갖는다.


가. chown : 파일 및 디렉터리의 사용자 소유권, 그룹 소유권 변경

형식 : chown [옵션] [소유자][:그룹명] [파일명]


옵션

설명

-R

 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경



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

1
2
3
4
5
[root@localhost kinew]# ls -l
drwxrwxr-x.    2    kinew    kinew    6    Jan    28    22:59    KINEW
[root@localhost kinew]# chown -R root KINEW
[root@localhost kinew]# ls -l
drwxrwxr-x.    2    kinew    kinew    6    Jan    28    22:59    KINEW
cs


ex2) 파일 pettle.txt의 그룹 소유권은 root로 변경한다.
1
2
3
4
5
[root@localhost kinew]# ls -l
-rw-rw-rw-.    1    kinew    kinew    65   Jan    25    12:34    pettle.txt
[root@localhost kinew]# chown :root pettle.txt
[root@localhost kinew]# ls -l
-rw-rw-rw-.    1    kinew    root     65   Jan    25    12:34    pettle.txt
cs


나. chgrp(change group) : 파일이나 디렉터리의 그룹 소유권 변경

형식 : chgrp [옵션] [그룹명] [파일명]


옵션

설명

-R

 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경



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


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


1
-rw-rw-rw-.    1    kinew    kinew    65   Jan    25    12:34    pettle.txt
cs


- rw-rw-rw-

㉠     ㉡      

 ㉠: 파일 유형, ㉡: 파일 접근 권한


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


기호

파일 유형

-

 일반 파일

d

 디렉터리 파일

b

 블록 단위로 읽고 쓰는 블록 장치[각주:3] 특수 파일

c

 문자 단위로 읽고 쓰는 문자 장치 특수[각주:4] 파일

l

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

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

p

 파이프

s

 소켓


2) 파일 허가권의 2 ~ 10번째 자리는 파일 접근 권한을 정의한다.

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

4) 파일 사용자는 파일 소유자(owner), 그룹 소속자(group), 기타 사용자(others 또는 public)로 분류한다.

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

6) 읽기, 쓰기, 실행의 접근 제한 표시는 '-'이다.

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


사용자 권한

그룹 권한 

기타 사용자 권한

기호 모드

r

w

x

8진수 숫자 모드

2

1


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


일반 파일

디렉터리 파일

특수 파일

읽기(r)

 파일 내용 읽기

 디렉터리 내 파일 목록 읽기

 read()로 파일 읽기

쓰기(w)

 파일 수정/삭제

 디렉터리 내 파일 생성/삭제 가능

 write()로 파일 내용 변경

실행(x)

 파일 실행

 cd 명령 이용하여 디렉터리로 이동 가능

 권한 의미 없음



가. chmod : 파일이나 디렉터리의 접근 허가권 변경

· 형식 : chmod [옵션] [파일명]


옵션

설명

-R

 하위 디렉터리에 포함되어 있는 모든 디렉터리 및 파일의 권한 변경


· 숫자 모드


기호

숫자(2진수)

숫자(8진수)

의미

rwx

111

7

 읽기, 쓰기 실행 권한 모두 가짐

rw-

110

6

 읽기와 쓰기 권한

r-x

101

5

 읽기와 실행 권한

r--

100

4

 읽기 권한만을 가짐

-wx

011

3

 쓰기와 실행 권한

-w-

010

2

 쓰기 권한만을 가짐

--x

001

1

 실행 권한만을 가짐

---

000

0

 아무 권한 없음


· 기호 모드


기호 모드

의미

적용 예제

u

 소유자

 · chmod u+w : 소유자에게 쓰기 권한 부여

 · chmod u-x : 소유자의 실행 권한 제거

 · chmod o=rx : 기타 사용자에게 읽기, 실행 권한 부여

g

 그룹

o

 기타 사용자

a

 모든 사용자(u+g+o)

+

 허가권 부여

-

 허가권 제거

=

 특정 사용자에게 허가권 지정

r

 읽기

w

 쓰기

x

 실행



나. umask : 새로 생성되는 파일이나 디렉터리의 기본 허가권 값 지정

1) 기본 권한

· 파일 : 666

· 디렉터리 : 777

2) 파일이나 디렉터리를 생성 시 디폴트 권한 값에서 설정한 umask 값을 뺀 값을 기본 허가권으로 설정한다. (ex: umask가 022인 경우 디폴트 파일 권한은 644(666-022), 디폴트 디렉터리 권한은 755(777-022)로 변경된다.)


· 형식 : umask [옵션] [값]


옵션

설명?

-S

 umask 값 문자로 표기



3. 특수 권한


가. SetUID[각주:5]와 SetGID[각주:6]

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

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

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



코드

절대값

설명

SetUID

s

4000

 프로세스 실행 당시 UID로 설정

SetGID

s

2000

 프로세스 실행 당시 GID로 설정

Sticky bit

t

1000

 실행 후에도 메모리를 점유하도록 설정


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

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

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


나. Sticky bit

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

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

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

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

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

6) 생성된 Sticky bit 파일을 삭제 시에는 소유자(파일 생성자)와 관리자만 지울 수 있다. 다른 사용자는 자신의 소유가 아닌 파일을 삭제할 수 없다.

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

· 일반적으로 Sticky bit로 설정되는 디렉터리는 /tmp 안에 생성된다.



4. 디스크 쿼터(Disk Quota) : 디스크 쿼터(Disk Quota) : 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것


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

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

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


-수정중-

  1. 소유권(Ownership) : 임의의 파일 또는 디렉터리에 대해 사용자와 그룹들의 소유 권한을 나타낸 것. [본문으로]
  2. 그룹(Group) : 사용자들의 시스템 운영 특성에 따라 사용자들을 묶어 놓은 것. [본문으로]
  3. 블록 장치 : 하드디스크, 플로피디스크, CD/DVD 등의 저장 장치 [본문으로]
  4. 문자 장치 : 마우스, 키보드, 프린터 등 입출력 장치 [본문으로]
  5. SetUID : 사용자가 사용할 때만 소유자 권한으로 파일 실행 [본문으로]
  6. SetGID : 사용자가 사용할 때만 그룹 권한으로 파일 실행. SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가진다. [본문으로]