RedHat Linux >> Fundamentals of the GNU/Linux
|
||||||||||||||||||||||||||||||||||||||||||||||||||
[목차] | ||||||||||||||||||||||||||||||||||||||||||||||||||
제3장 리눅스 명령어
14. 파일 퍼미션 변경하기 - chmod 리눅스는 멀티유저를 지원하기 때문에 하나의 파일이나 디렉토리를 여러 명이 공유할 수 있습니다. 쉽게 얘기해서 간단한 pc 서버로 리눅스를 사용한다면 그 서버에 물려 있는 클라이언트에 여러 명이 동시에 들어와서 서로 상대방이 다루던 파일이나 디렉토리를 마음대로 다룰 수 있다는 것입니다. 그런데 이것은 어떻게 보면 좋은 점이 될 수 있지만 나쁜 점이 될 가능성이 더 큽니다. 내가 만든 프로그램 소스를 다른 사람이 본다거나 마음대로 지울 수 있다면 문제가 심각해지겠죠? 이러한 것을 방지하고자 리눅스에서는 파일이나 디렉토리에 그것을 소유하고 있는 사용자에게 권한을 부여할 수 있는 기능을 제공하고 있습니다. 예를 들어 내가 만든 파일을 다른 사람이 읽거나 쓸 수 있도록, 아니면 실행만이라도 할 수 있도록 만들 수 있습니다. 쉬운 예로 pc 통신 게시판을 들 수 있습니다. 자신이 올려놓은 글은 게시판 책임자가 아니면 다른 사람이 볼 수는 있지만 지울 수는 없을 것입니다. 바로 이러한 것이 파일에 권한을 부여하는 기능 때문에 가능한 것입니다.
'ls'라는 명령어를 배울 때 옵션 'l'에 대해 이미 배웠습니다. 옵션 'l'을 사용하면 긴 형태로 파일이나 디렉토리의 내용이 보여졌죠? 그리고 맨 앞에 보면 이상한 표시가 있을 것입니다. 이것이 바로 권한을 나타내는 것입니다. 그러면 하나의 파일로 그 예를 들어봅시다.
[root@leelab /root]# ls -l test.txt -rw-r--r-- 1 root root 36 jan 14 00:44 test.txt [root@leelab /root]#
제일 앞에 보면 '-'로 되어있죠? 바로 파일을 의미하는 것입니다. 그 다음부터가 바로 권한을 의미하는 것입니다. 세 개씩 끊어서 보면 정확하게 세 등분으로 나뉘는데 차례로 사용자, 그룹, 다른 사용자를 의미합니다. 먼저 사용자에 해당하는 부분을 보도록 합시다.
rw-
이렇게 되어있죠? 이 파일의 소유자인 사용자는 이 파일을 읽을 수 있을 뿐만 아니라 쓸 수도 있습니다. 그런데 실행하지는 못하는군요. 즉 차례로 rwx인데 r은 읽기를 의미하고, w는 쓰기, x는 실행을 의미합니다. 지금 보면 x대신에 -로 되어 있는데 이것이 바로 실행이 허가되지 않는다는 의미입니다.
두 번째 그룹 부분을 보도록 합시다.
r--
읽기만 할 수 있습니다. 그런데 여기서 한 가지 알고 넘어갈 것이 있습니다. 바로 그룹이라는 것인데 pc 통신에서의 동호회를 예로 들면 쉽게 이해할 수 있을 것입니다. 어떤 동호회에 가입되어 있지 않아서 그 동호회에서 제공하는 자료를 다운로드 할 수 없는 경우를 경험해 봤을 것입니다. 이것은 내가 이 그룹에 속해 있지 않기 때문에 그런 것입니다. 즉 동호회에 가입하는 사용자에게는 이 그룹에 속하게 하면 간단하게 운영체제 특성상 동호회에 가입된 사람만 자료에 접근할 수 있도록 쉽게 구현할 수 있는 것입니다. 이제 다음 부분에서 사용자 계정에 대해 배우는데 그때 다시 언급하도록 하겠습니다.
이번에는 마지막으로 다른 사용자 부분을 봅시다.
r--
역시 읽기만 할 수 있군요? 다른 사용자라는 것은 그룹에 속해있지 않은 사용자를 의미하는 것입니다.
이러한 권한을 사용자가 어떻게 마음대로 바꿀 수 있는지 알아봅시다. 복잡해 보이지만 사실은 아주 간단합니다. 'chmod'라는 명령어를 이용해서 바꿀 수 있거든요. 이 'chmod'명령어를 이용해서 권한을 바꿀 때는 크게 두 가지 방법으로 할 수 있습니다. 전체적으로 완전히 바꾸는 방법과 부분적으로 추가하거나 빼버리는 방법이 있습니다. 필자의 경우에는 첫 번째 방법을 많이 사용하는데 편한 방법을 선택해서 사용하면 됩니다.
우선 전체적으로 바꾸는 방법부터 알아봅시다. 전체적으로 바꾸는 방법은 아주 간단합니다. 일단 읽기는 4이고 , 쓰기는 2, 그리고 실행은 1입니다. 읽기, 쓰기, 실행을 모두 허락하면 7이 되는 것입니다. 즉 허가되는 것을 더하면 됩니다. 그러면 간단한 예를 봅시다 사용자는 전부 허락하고 그룹은 읽기와 실행만 그리고 다른 사용자는 실행만 허락한다면 그 숫자는 어떻게 될까요?
※참조
바로 751이 됩니다. 앞의 숫자 7은 사용자의 읽기, 쓰기, 실행의 허가를 의미하고 두 번째 숫자5는 그룹의 읽기, 실행의 허가를 의미합니다. 마지막 숫자 1은 다른 사용자의 실행 허가를 의미하는 것입니다. 그러면 실제로 하나의 파일을 이 상태로 모드를 바꿔봅시다.
[root@leelab /root]# ls -l test.txt -rw-r--r-- 1 root root 36 jan 14 00:44 test.txt [root@leelab /root]#
test.txt 파일을 보면 사용자는 읽기와 쓰기의 허가를, 그룹과 다른 사용자는 읽기만 허가한다는 것을 알 수 있습니다. 그러면 위와 같이 모드를 바꿔봅시다.
[root@leelab /root]# ls -l test.txt -rw-r--r-- 1 root root 36 jan 14 00:44 test.txt [root@leelab /root]# chmod 751 test.txt [root@leelab /root]# ls -l test.txt -rwxr-x--x 1 root root 36 jan 14 00:44 test.txt* [root@leelab /root]#
정말로 바뀌었죠? 필자는 이와 같이 전체적으로 바꾸는 방법을 많이 사용합니다. 이번에는 부분적으로 바꾸는 방법에 대해 알아보겠습니다. 부분적으로 바꾸는 방법을 많이 사용하는 사람도 있는데, 그 이유는 다음의 경우를 보면 알 수 있습니다.
[root@leelab /root]# ls -l test.txt -rwxr-x--x 1 root root 36 jan 14 00:44 test.txt* [root@leelab /root]#
파일의 접근 모드를 보니 위와 같이 되어있습니다. 지금 현재 그룹이 일기와 실행만 가능한데 쓰기도 가능하게 하려면 어떻게 해야 할까요?
[root@leelab /root]# chmod 771 test.txt [root@leelab /root]# ls -l test.txt -rwxrwx--x 1 root root 36 jan 14 00:44 test.txt* [root@leelab /root]#
이와 같이 하면 됩니다. 그런데 사실 번거롭죠? 단순히 그룹에 쓰기만 허용하는 것인데 전체적으로 모두 바꾸었으니 말입니다. 마찬가지로 허가하지 않게 하더라도 전체적으로 다시 수정해야 할 것입니다. 이것을 굉장히 번거로워하는 사용자가 많습니다. 그래서 이런 경우 필요한 부분을 추가하거나 빼는 방법을 많이 사용합니다.
그러면 어떤 식으로 하는지 먼저 그 방법부터 설명하도록 하겠습니다. 원리는 간단합니다. 먼저 사용자, 그룹, 다른 사용자, 전체인지를 명시합니다. 물론 동시에 두 개를 지정해도 됩니다. 사용자일 때는 u를, 그룹일 때는 g, 다른 사용자일 때는 o, 전체 일 때는 a가 사용됩니다. 두 번째로 허용, 제거 등이 올 수 있습니다. 허용은 +를, 제거는 -를 사용합니다. 그리고 마지막으로는 r, w, x가 올 수 있는데 바로 읽기, 쓰기, 실행을 의미하는 것입니다. 간단한 예를 볼까요?
[root@leelab /root]# ls -l test.txt -rwxrwx--x 1 root root 36 jan 14 00:44 test.txt* [root@leelab /root]#
사용자와 그룹의 실행 허가를 전부 없애봅시다.
[root@leelab /root]# chmod ug-x test.txt [root@leelab /root]# ls -l test.txt -rw-rw---x 1 root root 36 jan 14 00:44 test.txt* [root@leelab /root]#
'ug'는 사용자와 그룹을 의미하고 '-'는 제거를 의미합니다. 그리고 'x'는 실행을 의미합니다.
|
||||||||||||||||||||||||||||||||||||||||||||||||||
[목차] |