관리 메뉴

리눅스 퍼미션(Permission)사용 방법 본문

리눅스/Linux 공부내용

리눅스 퍼미션(Permission)사용 방법

ª_ª 2016. 12. 22. 10:04
728x90
반응형

퍼미션(Permission) 이란?

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


퍼미션 특징

퍼미션

의미

파일

디렉터리

r

읽기(read)권한

파일 읽기

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

w

쓰기(write)권한

파일 저장, 삭제

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

x

실행(execution)권한

파일 실행

디렉터리에 접근 할 수 있음

s

SetUID, SetGID 권한

파일 소유자, 그룹소유자의 권한으로 실행

t

Sticky Bit 권한

공유 디렉터리로 사용됨

 

8진수로 표현하는 퍼미션

8진수

표시되는 퍼미션

의미하는 내용

0

---

아무런 권한이 없음

1

--x

실행권한만 있음

2

-w-

쓰기 권한만 있음

3

-wx

쓰기와 실행권한만 있음

4

r--

읽기 권한만 있음

5

r-x

읽기와 실행권한만 있음

6

rw-

읽기와 쓰기 권한만 있음

7

rwx

모든 권한(읽기, 쓰기, 실행)

 

실제 퍼미션의 확인

ls -l

# ls l

합계 120

-rw-------. 1 root root 1954 2016-11-16 04:50 anaconda-ks.cfg

-rw-r--r--. 1 root root 25 2016-12-13 01:39 filename

-rw-r--r--. 1 root root 62923 2016-11-16 04:50 install.log

-rw-r--r--. 1 root root 11949 2016-11-16 04:48 install.log.syslog

....

#

 

각각의 파일은 총 7가지의 속정을 가지게 되는데 각 부분의 의미하는 바는 다음과 같습니다.

1. 파일 퍼미션 : 접근 권한 명시

2. 링크 카운터 : 해당하는 데이터블록에 연결되어진 파일의 개수

3. 파일의 소유자

4. 파일그룹 소유자

5. 파일 사이즈

6. 최종 변경 일시

7. 파일 이름

 

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

d

r

w

x

r

-

x

r

-

x

A: 파일유형

B: 소유자 권한

C: 그룹 소유자 권한

D: 일반 사용자 권한

 

위와 같은 정보를 바탕으로 해당하는 파일은 디렉토리이며 소유자는 읽고 쓰고 실행할 수 있고 그룹 소유자는 읽고 실행만 가능하며 일반 사용자는 읽고 실행 할 수 있다는 것을 알 수 있습니다.

 

A: 파일유형

해당하는 파일의 종류를 명시하는 부분이며 한 개의 문자로 표현합니다. 시스템에서는 파일은 크게 일반 파일과 특수 파일로 구분할 수 있고 일반 파일에는 텍스트, 실행, 데이터 파일이 포함되고 특수 파일에는 블록파일, 캐릭터파일, 링크 파일등이 해당됩니다.

 

문자의 의미

문자

의미

-

일반파일을 의미

b

블록구조의 특수파일 (/dev/sda)

c

입출력에 사용되는 특수파일을 의미 (dev/console)

d

디렉터리를 의미

l

심볼릭 링크파일 (symbolic link file) 의미

 

다중사용자시스템에서는 파일의 보안을 위하여 퍼미션을 설정해야 하고 경우에 따라서 퍼미션을 조정해야 하는 경우가 생길 수 있습니다. 퍼미션을 변경하는 명령은 chmod가 있고 파일의퍼미션을 변경하는 방법에는 캐릭터 방식과 8진수를 이용하는 방법이 있습니다.

 

1. 캐릭터를 이용하는 방식

퍼미션을 명시하는 r,w,x 세 개의 캐릭터를 해당하는 권한부분에 더하거나 빼주는 방식으로 사용합니다.

) chmod g+w file_name

file_name 파일의 그룹 소유자 권한에 w권한을 더한다는 뜻입니다.

# mkdir dir

# ls -ld dir

drwxr-xr-x. 2 root root 4096 2016-12-15 17:45 dir/

# chmod g+w dir

# ls -ld dir

drwxrwxr-x. 2 root root 4096 2016-12-15 17:45 dir/

#

* 그룹소유자에 w권한이 추가 되었습니다.


) chmod u+x,g+rw,o+rwx file_name

file_name 파일의 유저에 실행권한을 더하고, 그룹권한에 읽기와 쓰기를 더하고 일반사용자(other)권한에 모든 권한을 더합니다.

# mkdir dir1

# ls -ld dir1

drwxr-xr-x. 2 root root 4096 2016-12-15 17:50 dir/

chmod u+x,g+rw,o+rwx dir1

drwxrwxrwx. 2 root root 4096 2016-12-15 17:50 dir/

#

* 결과는 rwxrwxrwx가 되었습니다.

이 방식은 직관으로 조정할 수 있다는 장점이 있지만 변경하는 사항이 많아지게 되면 명령의 형식이 복잡해지기 때문에 많이 사용하지 않습니다.


2. 8진수를 이용하는 방식

각각의 권한은 그에 해당하는 숫자를 가지게 됩니다.

r=4, w=2, x=1 rwx는 숫자를 더하여 7이라는 형식으로 표현할 수 있습니다.

 

또한 권한은 총 3개의 부분으로 구성되어 있기 때문에 한 개의 파일의 권한은 총 3개의 숫자로 표현 될 수가 있습니다.

 

# mkdir testdir

# ls -ld testdir

drwxr-xr-x. 2 root root 4096 2016-12-15 18:29 testdir/

#

* 파일의 권한은 755가 됩니다. rwx = 4 + 2 +1 = 7 rx = 4 + 1 = 5 rx = 4 + 1 = 5 따라서 755

8진수를 이용한 변경 방식은 기존의 권한을 고려하지 않고 새롭게 부여될 권한을 지정하는 방식으로 적용됩니다.

 

chmod 644 file_name

# chmod 644 testdir

# ls -ld testdir

drw-r--r--. 2 root root 4096 2016-12-15 18:29 testdir/

#

* 644rw-r--r-- 표현될 수 있고 유저는 읽고 쓰기, 그룹사용자와 일반사용자는 읽기로 변경됩니다.

 

chmod 600 file_name

# chmod 600 testdir

# ls -ld testdir

drw-------. 2 root root 4096 2016-12-15 18:29 testdir/

#

* 600rw-------로 표현될 수 있고 유저는 읽고 쓰기, 그룹사용자와 일반사용자는 아무 권한도 없습니다.

 

기본 퍼미션(Permission) 수정

매번 파일이나 디렉터리 생성 시 기본 퍼미션이 적용됩니다. 이 기본 퍼미션에 영향을 주는 것이 umask(user mask)라고 하는데 이것은 사용자 초기화 환경파일에 명령어를 넣어주어 각 사용자의 기본 퍼미션을 수정할 수 있습니다.

 

umask 유틸

umask 유틸은 파일이나 디렉터리를 생성할 때 초기화 퍼미션에 영향을 줍니다. 이 유틸은 위에서 본 chmod명령을 사용할 때처럼 읽고, 쓰고, 실행하는 3개의 값으로 퍼미션을 가지고 있습니다. 마찬가지로 3개의 값 중 첫 번째는 소유자(Owner), 두 번째는 그룹(Group), 세 번째는 일반사용자(Other)의 값을 결정하게 됩니다.

CentOS 6.5에서는 umask의 기본 값은 0022입니다.


umask

# umask

0022

umask의 값은 Shell에 의존적이여서 각 Shell에 따라 0022(sh), 022(ksh), 22(csh), 022(ksh)으로 기본 값으로 정해져 있습니다. 0022라고 나오면 맨 앞에 부분은 없는 것이라고 생각하고 3자리만 기억하면 됩니다.

 

umask 값은 파일과 디렉터리 생성시 초기화 퍼미션 값이 서로 틀립니다. 파일을 생성할 때 값은 666(rw- rw- rw-) 이며, 디렉터리 생성시에는 777(rwx rwx rwx)로 초기화 됩니다. 파일과 디렉터리의 초기화 값이 틀린 이유는 디렉터리는 생성 후에 cd명령으로 그 디렉터리에 접근 할 수 있어야 합니다. umask 값은 변경도 가능합니다. 파일(666), 디렉터리(777)제외한 값은 umask 명령으로 설정이 가능합니다. 예를 들면 기본 umask 값이 022 일 때 파일을 새로 생성시에는 초기화 퍼미션 값이 644(rw- r-- r--) 로 나타납니다.

 

umask

umask 8진수 값

파일 퍼미션(666)

디렉터리 퍼미션(777)

0

rw-

rwx

1

rw-

rw-

2

r--

r-x

3

r--

r--

4

-w-

-wx

5

-w-

-w-

6

---

--x

7

---

---

 

umask는 언제 사용할까?

보안상 umask 값을 바꿔야 할 때가 있습니다. 예를 들어 umask 값을 027로 바꾸게 되면 새로 생성되는 파일이나 디렉터리의 퍼미션은 어떻게 될까요?

 

umask 사용법


umask 적용 후 파일 생성

# umask

0022

# umask 027

# umask

027

# touch umask_file

# ls ld umask_file

-rw-r-----. 1 root root 0 2016-12-15 21:45 umask_file

* 파일에 퍼미션 기본값은 666인데 umask 027을 적용(삭제)하게 되면 666 027 = 640이 됩니다.

 

umask 적용 후 디렉터리 생성

# umask

027

# touch umask_dir

# ls ld umask_file

drwxr-x---. 2 root root 4096 2016-12-15 21:51 umask_dir/

* 디렉터리에 퍼미션 기본값은 777인데 umask 027을 적용(삭제)하게 되면 777 027 = 750이 됩니다.

 

* umask는 시스템을 재부팅하면 초기 값으로 돌아갑니다.



728x90
반응형
Comments