리눅스서버

[기본] 리눅스의 퍼미션(권한)을 조정하기 (chmod, chown)

리눅스는 여러사용자가 들어와 사용하는 멀티유저 시스템입니다..

그런데 한가지 문제가 발생합니다.

여러 사용자가 들어오면 서버에 올려진 비밀자료 열람과 그것을 변조,수정,삭제를 할 우려가 높아집니다..

그리고 그 비밀자료는 일부 사용자에게만 공개하는 것이였습니다. 하지만 모든사용자들이 다 볼 수 있겠죠.. 왜냐면 여러사람들이 사용하는 컴퓨터이기때문이지요..

 

이 문제가 극복하기위해 리눅스에 한가지 기능을 추가합니다.

바로 퍼미션(권한)이라는 기능을 추가했습니다.. 퍼미션은 말그대로 시스템에서 유지되는 권한기능입니다..

참고로 윈도우도 퍼미션기능이 있긴하지만, 여러사용자들이 들어오는 서버용이 아니기에 리눅스처럼 활성화되어있지않습니다.. 

 

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

이로써 비밀자료는 퍼미션이 부여된 사용자들에게만 공개할 수 있게 되었습니다..

 

그리고 "이 파일은 누구꺼지?"라는 문제에서 소유자 개념도 생겨납니다. 

앞에서 리눅스는 여러사용자들이 공동으로 사용하는 운영체제라고 말했습니다..

그러면 "이 파일은 내가 만들었어.. 그래서 내꺼야.. , 아니! 니가 만들었지만, 내가 대부분 수정했어.. 그래서 내꺼야 "라는 분쟁이 발생합니다.. 왜냐면 혼자쓰는 게 아니라 여러사람들이 같이 사용하는 컴퓨터이잖아요.

그래서 리눅스에서 "이건 니꺼다"라고 정해줍니다.. 리눅스 曰 "이 파일은 니가 만들었으니, 니가 소유자, 즉 이 파일의 주인이야!!"

 

 

1) 파일정보 보기

일단, 퍼미션 조정하려면 파일에 부여된 퍼미션부터 봐야겠지요?

 

1.png

 

먼저 "ls -al" 명령어는 다들 아시죠? 앞에서 배웠습니다. 현재위치에 있는 파일들을 자세히보여주는 명령입니다.

그리고 자세히 보면 맨 뒤부분은 파일이름이 표시된다는 건 아시겠나요?

그치만, 앞부분에 있는 "drwxr-xr ~~ 머시기" 이건 도대체 뭔지 모르겠네요..;;

 

차근차근 봅시다..

drwxr-xr-x  2  root  root  4096 Apr 22 16:59 conory

파일Type 퍼미션정보 링크수 소유자 소유그룹 용량 생성날짜 파일이름
  • 파일 Type : "d" -> 디렉토리 , "l" -> 링크파일 , "-" -> 일반파일 등등..
  • 퍼미션정보 : 해당 파일에 어떠한 퍼미션이 부여되어있는 지 표시!
  • 링크수 : 해당 파일이 링크된 수! 링크는 윈도우의 "바로가기"와 같습니다. "in [대상파일] [링크파일]" 명령으로 링크파일을 만듭니다.
  • 소유자 : 해당 파일의 소유자이름! (누구껀지?)
  • 소유그룹 : 해당 파일을 소유한 그룹이름! 특별한 변경이 없을 경우 소유자가 속한 그룹이 소유그룹으로 지정됩니다.
  • 용량 : 파일의 용량!
  • 생성날짜 : 파일이 생성된 날짜! 
  • 파일이름 : 파일이름이죠!
 
이제 퍼미션정보를 봐야겠지요.. 윗부분에서 보셔서 아시겠지만, 앞에서 두번째부터 아홉번째까지가 바로 퍼미션정보입니다.
rwxr-xr-x
"근데 이게 퍼미션 정보라고요??.. 와이리 못생겨노?"
 
일단은 알아두어야 할게 있는 데요.. 퍼미션 종류에는 3가지가 있습니다.. 그리고 퍼미션의 사용자 지정에도 3가지가 구요..
 
* 퍼미션 종류 , () 괄호에 있는 것이 해당 퍼미션 기호
  • 읽기 ( r ) : 파일의 읽기권한
  • 쓰기 ( w ) : 파일의 쓰기권한
  • 실행 ( x ) : 파일의 실행권한
 
* 퍼미션의 사용자지정
  • 소유자 : 소유자에 대한 퍼미션지정
  • 그룹 : 소유그룹에 대한 퍼미션지정
  • 공개 : 모든사용자들에 대한 퍼미션지정
 
그럼 퍼미션 정보를 볼까요?
rwxr-xr-x
 
"r  w  x가 왠지 낮익어요.." 하는 분 계신가요?? 
네.. 맞아요.. 위에서 봤던 퍼미션 기호이지요..
 
그런데 기호의 종류는 ( r  w  x )  3개인데.. 퍼미션정보에는 총9개가 표시되네요.. 뭔지?
일단 세자리씩 끊어봅시다.. ( rwx  r-x  r-x ) 이제 감이오나요?
바로!! "소유자 : rwx , 그룹 : r-x , 공개 : r-x"  이런 얘기지요.. ㅎㅎ (이때 '-' 기호는 그 퍼미션은 없다는 기호입니다.)
해석해보면 " 이 파일에 대해서 소유자는 읽기(r),쓰기(w),실행(x)을 허용하고, 
파일의 소유그룹에 속하고 있는 사용자들은 읽기(r),실행(x)만 허용하고,
이외에 나머지 모든 사용자들도 읽기(r),실행(x)만 허용한다. "
 
 
2) 퍼미션 변경하기
파일이 생성될때 기본적인 퍼미션이 부여됩니다.
하지만, 퍼미션을 변경하고 싶을 때가 있습니다. (가령 이 파일을 모두에게 공개한다거나 하는...)
 
퍼미션 변경에는 여러가지 방법이 있지만, 여기서는 가장 쉬운방법으로 배워보도록 합시다.
바로 "chmod" 명령을 사용하면 아주 손쉽게 퍼미션을 변경할 수 있습니다.
 
chmod [변경될 퍼미션값] [변경할 파일]
 
여기서 [퍼미션값]을 지정해 줘야하는 데요..
퍼미션값을 구하는 방법은 다음과 같습니다.
 
  • 각 퍼미션 기호를 숫자로 변환 합니다. ( r = 4 , w = 2 , x = 1 )
예) r  -  x 인 경우 4  0  1
 
  • 변환한 숫자를 합산합니다.
예) 4  0  1 인 경우  4+0+1 = 5
 
이런식으로 하나의 퍼미션을 숫자값으로 변환하면 됩니다..
예) rwxr-xr-x 이면 rwx  r-x  r-x 세자리씩 끊고, 4+2+1  | 4+0+1 | 4+0+1  숫자변환 뒤 합산하면 "755" 라는 퍼미션값이 나옵니다.
 
그래서 " chmod 755 conory.text " 명령을 실행하면 conory.text 파일이 755에 해당되는 퍼미션으로 변경됩니다.
그리고 디렉토리도 이 방법으로 퍼미션을 변경할 수 있습니다.
 
디렉토리의 경우 "-R" 옵션을 사용하면 하위 디렉토리의 모든 디렉토리및 파일의 퍼미션이 변경됩니다.
예) " chmod -R 777 conory " conory 디렉토리의 하위에 위치한 모든 파일및 디렉토리 퍼미션이 777로 변경됩니다.
 
 
3) 소유자 변경하기
파일의 소유자 양도를 해야 될 경우 소유자 변경을 할 수 있습니다.
아래 명령으로 손쉽게 변경할 수 있습니다.
 
chown [변경할 소유자] [변경할 파일]
 
이 명령으로 소유자뿐만 아니라 소유그룹도 변경할 수 있습니다.
[변경할 소유자]란에 ".그룹이름" 형식으로 입력하면 됩니다. " .conory "
예를 들어 conory.text의 소유자를 "conory"로, 소유그룹을 "conory2"로 동시에 변경할 경우 " chown conory.conory2 conory.text "
 
 
* 실습
conroy.text이란 파일을 만들어 퍼미션을 rwxrwxrwx(777)로 변경하고, 소유자및 소유그룹을 "conory"로 변경해봅시다.
단, conory라는 사용자계정이 생성되어 있어야겠지요..
 
2.png
 
Atachment
첨부 2
  • ?
    친절왕 2018.11.28 16:20:49
    정말 친절하게 자세히 설명된 글 이네요 감사합니다
  • ?
    대박쓰 2019.01.16 09:39:11
    정말 좋은 글 감사합니다
  • ?
    대바아악 2019.02.07 13:56:45
    정말 친절하게 되어 있네요 감사합니다.!
  • ?
    학생 2019.02.13 18:19:33
    설명이 잘 되어 있네요. 쉽게 배우고 갑니다.
  • ?
    지나가던나그네 2019.02.23 18:23:16
    친절한 설명감사합니다^^
  • ?
    스님 2019.03.15 09:46:55
    진짜 이해 잘 되게 설명이 되어져 있네요! 감사합니다!!!!
  • ?
    무지한사람 2019.05.14 13:29:47
    감사합니다
  • ?
    블루 2019.09.04 02:21:58
    감사합니다.
  • ?
    독서하는개발자 2020.02.20 15:44:38
    설명 너무 좋네요.. 공유해도될까요
  • profile
    conory 2020.02.21 00:12:04
    네. 마음껏 퍼가세요ㅎㅎ
  • ?
    헷갈려요 2020.03.03 00:29:13
    x의 의미가 실행이라고 하셨는데요.. 디렉토리 허가권에서의 x는 무얼 의미하나요?? 디렉토리 실행인가요?? 만약 맞다면 디렉토리 실행이라는게 있나요???
  • profile
    conory 2020.03.05 02:14:03

    디렉토리 내의 "목록"을 조회하거나 변경(파일 추가/삭제)할 수 있는 권한입니다. 읽기 권한과는 달리(실행 권한만 없는 경우) 경로만 알면 파일에 접근할 수 있습니다.

  • ?
    준비 2020.04.01 10:26:41
    저도 내용 좀 퍼가도 될까요? 내용이 이해하기 쉽네요!!
  • profile
    conory 2020.04.02 19:35:09
    "이 저작물은 CC BY-SA 4.0에 따라 이용할 수 있습니다."
    블로그 하단에 있습니다.
  • ?
    Linux교육이 너무 비싸요ㅜ.ㅜ 2020.04.29 11:40:28
    정말 감사합니다! 이렇게 콕 콕 콕 찍어서 알기 쉽게 정리된 글은 최근에 보질 못했네요.. 많은 도움이 되었습니다! 코로나 조심하세요!
  • ?
    매티 2020.05.15 17:06:53
    리눅스가 서버에 많이 쓰이는건 맞지만
    서버용으로 만들어진건 아니에요
  • ?
    AA 2020.08.24 15:59:19
    정말 감사합니다!
  • ?
    굿굿 2021.01.24 20:36:59
    정말 이해하기 쉽게 설명하셨네요. 이번 기회에 확실하게 리눅스 권한에 대해 이해하고 갑니다!!
  • ?
    와우 2021.05.24 22:58:20
    정말 좋은 설명입니다!! 감사해요!!
  • ?
    2022.01.19 15:21:17
    좋은 설명이에요! 잘 봤습니다.
  • ?
    아삭한 참치 2023.03.30 10:32:20
    많이 배우고 갑니다 감사합니다
?