봉봉의 개인 블로그

2018-09-17(리눅스의 퍼미션) 본문

입사후 공부한내용

2018-09-17(리눅스의 퍼미션)

봉봉이네 2018. 9. 17. 11:20

리눅스의 퍼미션

리눅스는 서버용으로 만들어진 운영체제이며, 여러 사용자가 들어와 사용하는 멀티 유저 시스템이다.
여러 사용자가 들어와 사용하는 멀티 유저 시스템이기 때문에 한가지 문제가 발생한다.
여러 사용자가 들어오면 서버에 올려진 공개되선 안되는 자료에 대해 열람및 수정 삭제를 할 우려가 높아지게 된다. 또한, 파일의 공개를 일부 사용자에게만 공개하는것이 목적이였다면 더더욱 문제가 된다.

리눅스는 이러한 문제를 해결하기위해 퍼미션(권한)이라는 기능을 추가하게 된다.
퍼미션은 말그대로 시스템에서 유지되는 권한기능이다.
참고로 윈도우는 퍼미션기능은 존재하지만 여러 사용자들이 들어오는 서버용 운영체제가 아니기 떄문에 리눅스처럼 활성화 되어있지않는다.

퍼미션 기능을 통해 사용자들은 자신한테 읽기퍼미션이 부여된 파일만 읽을수 있고, 쓰기퍼미션이 부여된 파일만 쓰기와 수정이 가능하며, 실행퍼미션이 부여된 파일만 실행 가능하게 된다.

퍼미션기능이 생기면서 파일의 소유자 개념도 생겨나게 되게 된다.

1)파일 정보 보기

일단, 퍼미션을 조정하려면 파일에 부여된 퍼미션부터 봐야한다.
1.png
먼저 "ls -al" 명령어를 통해 현재위치의 파일들을 본다.
차근차근 살펴 보면

drwxr-xr-x 2 root root 4096 Apr 22 16:59 conory
  • 파일 Type : "d" -> 디렉토리, "l" -> 링크파일, "-" -> 일반파일 등등..
  • 퍼미션 정보 : 해당 파일에 어떠한 퍼미션이 부여되어있는지 표시
  • 링크수 : 해당 파일이 링크된 수 (링크는 윈도우의 "바로가기"와 같다.) "in [대상파일] [링크파일]" 명령으로 링크파일 생성한다.
  • 소유자 : 해당 파일의 소유자 이름
  • 소유그룹 : 해당 파일을 소유한 그룹이름 (특별한 변경이 없을 경우 소유자가 속한 그룹이 소유그룹으로 지정된다.)
  • 용량 : 파일의 용량
  • 생성날짜 : 파일이 생성된 날짜
  • 파일이름 : 파일이름

여기서 퍼미션 정보를 보면 "rwxr-xr-x" 가 퍼미션 정보이다.

퍼미션은 종류가 3가지 이며 읽기(r), 쓰기(w), 실행(x) 이고, 9자리를 3자리씩 끊어서 소유자, 그룹, 공개 순으로 보면 된다.

예를들면 "rwxr-xr-x" 퍼미션 정보는

소유자 : rwx
그룹 : r-x
공개 : r-x

라는 얘기가 된다. 

소유자는 읽기, 쓰기, 실행 권한을 가지고 그룹은 읽기, 실행 권한, 이외의 나머지 모든 사람들도 읽기, 실행 권한이라는 뜻이다.


2) 퍼미션 변경하기

파일이 생성될때 기본적인 퍼미션이 부여된다.
하지만, 퍼미션을 변경하고 싶을때가 있다.
퍼미션 변경에는 여러 방법들이 존재하지만, 가장 쉬운 방법으로는 "chmod" 명령을 사용하는 것이다.

chmod [변경될 퍼미션값] [변경할 파일]

여기서 [퍼미션값]을 지정해 줘야한다.

각 퍼미션은 기호를 숫자로 변환한다. (r = 4 , w = 2 , x = 1)
다음 변환한 숫자를 합산한다. (4 0 1 인 경우 4 + 0 + 1 = 5)

이런식으로 하나의 퍼미션을 숫자값으로 변환하면 된다.
"rwxr-xr-x" 를 변환하면 3자리씩 끊어서 4+2+1 , 4+0+1 , 4+0+1 로 "755" 라는 퍼미션 값이 나온다.

퍼미션값을 가지고 "chmod 755 conory.text" 명령을 실행하면 conory.text 파일이 755에 해당되는 퍼미션으로 변경되게 된다. 디렉토리 또한 이 방법으로 퍼미션 변경이 가능하며 디렉토리의 경우 "-R" 옵션을 이용하면 하위 디렉토리의 모든 디렉토리및 파일의 퍼미션값이 변경된다. 
ex) "chmod -R 755 conory" conory 디렉토리의 하위에 위치한 모든 파일및 디렉토리 퍼미션이 755로 변경된다.


3) 소유자 변경하기

파일의 소유자 양도를 해야 될 경우 소유자 변경을 할 수 있다.
아래 명령으로 손쉽게 변경할 수 있다.

chown [변경할 소유자] [변경할파일]

이 명령으로 소유자뿐만 아니라 소유그룹도 변경할 수 있다.
[변경할 소유자] 란에 ".그룹이름" 형식으로 입력하면 된다. ".conory"
예를 들어 conory.text의 소유자를 "conory" 로, 소유그룹을 "conory2"로 동시에 변경할 경우 "chown conory.conory2 conory.text" 로 명령하면 된다.


참고

2.png


출처


Comments