본문 바로가기

StoreHouse/Server

RedHat chmod 에관한설정

drwxrwxrwx

r w x r w x r w x
----- ----- -----
owner group other

r w x r w x r w x
----- ----- -----
4+2+1 4+2+1 4+2+1
chmod 777

ex 1 >
r w x r - x - - -
----- ----- -----
4+2+1 4+0+1 0+0+0
chmod 750

ex 2 >
r w x r - x r - x
----- ----- -----
4+2+1 4+0+1 4+0+1
chmod 755

ex 3>
r w x - - x - - x
----- ----- -----
4+2+1 4+0+1 4+0+1
chmod 711

다음은 김정겸님의 자세한 설명입니다
다음 글은 chmod에 대해 김정겸께 여쭈어 본 질문에 대한 답변입니다.

>chmod에 방법이 몇가지 있지요? 적용 숫자도 그렇고.. 아직 잘 몰라 755 -R *.* 방법을 사용하고 있거든요. 그런데 taekwon 게시판에 그 방법을 멋모르고 사용해서 요 전에 에러가 났던 것 같아요

그랬었네요. :-) 보통 설명하기가 귀찮아서 대충 "그냥 chmod -R 755 * 라고 하면 잘 될거야." 라고 하는데 아주 위험한 대답입니다. 차근차근 알고서 배워보세요. 그리 어렵지 않습니다.

> 너무 답답합니다. 가르쳐 주세요. 첫째 chmod가 보안 문제도 적용되는 것인가요?

네에, 보안문제에 바로 적용되는 문제입니다. 따라서 조심해야 합니다. 그냥 chmod -R 755 * 라고만 해서 쓰면 누구나 게시판의 게시물을 지우거나 고 칠수 있습니다. 쉽게 말해서 해킹이 된다는 겁니다. 따라서 chmod 명령은 항상 조심해서 사용해야 합니다.

> 둘째 아니면 다른 사람이 볼 수 있도록만 하는 것인가요?

아닙니다. 볼 수 있는 것만 관계된 것이 아니라, 다른 사람이 나의 행세를 할 수도 있고, 나의 파일을 마음대로 고칠 수도 있고, 그 외 여러가지 문제가 생길 수 있습니다.

일단 명령어에 대해서 개념적인 설명부터 시작을 해야겠네요. ( 남자가 질문했으면 "그냥 쉘에서 man chmod 해서 나오는 거 읽어보고 공부해서 지지고 볶든 말든 알아서 해욧~" 이라고 했을텐데.. 크흐... )

chmod 라는 명령은 change mode 라는 말의 준말입니다. 어떤 "상태"를 "변경"하라는 명령어죠. 여기에서 "상태"라는 것이 흔히 permission, 권한 이라는 부르는 것입니다.

유닉스라는 OS는 멀티 유저 시스템이고, 하나의 컴퓨터를 여러 사람이 공유해서 쓰게 됩니다. 코넷 가입자는 다들 soback 이라는 하나의 서버를 나누어쓰게 되고, 따라서 당연히 사용자들끼리, '이건 내 파일이니까 건드리지 마.' 하고 표시하는 것들도 있고, '이건 나만 고칠 수 있는데 다른 사람들은 보기만 해.' 라고 표시하고 싶은 것들도 있습니다.

이때 각 파일에는(디렉토리도 일종의 파일로 간주됩니다.) "읽기", "쓰기", 그리고 "실행하기"라는 세 가지에 대해서 각각 mode, 즉 상태가 존재합니다. 그리고 이러한 모드는 파일의 소유자, 소유자가 속한 그룹, 그 외 다른 사람들 이렇게 3 부류의 사람들에 대해서 각각 있습니다. 복잡한가요? :)

ls -l 이라는 명령을 해 보면 흔히 아래와 같은 화면을 볼 수 있습니다.

drwx--x--x 19 aragorn 1024 Mar 26 14:53 web-home

여기에서 제일 앞부분을 보세요. drwx--x--x 라는 부분이 있습니다. 요 부분이 바로 이 상태, mode를 표시하는 것입니다. 제가 해석을 해 보죠.

'd' - 이것은 이 파일이 디렉토리라는 것을 나타냅니다. 파일의 경우에는 그냥 - 만 있습니다.

'r' - 이것은 읽기 권한을 나타냅니다. 이 권한이 없으면 이 파일을 읽을 수가 없습니다. ( 디렉토리의 경우 안에 들어있는 파일의 '목록'을 열람할 수 없습니다. )

'w' - 이것은 쓰기 권한을 나타냅니다. 이 권한이 없으면 이 파일을 쓰거나, 변경 할 수 없습니다. ( 디렉토리의 경우 새로운 파일을 생성하거나 기존 파일을 삭제할 수 없습니다. )

'x' - 이것은 실행 권한을 나타냅니다. Excutable 의 약자로 보아야겠죠. 실행파일에는 반드시 x 가 있어야 하고, 디렉토리의 경우에는 x가 없으면 해당 디렉토리 내로 이동해서 들어갈 수가 없습니다. chmod 000 web-home 이라고 해 보면 web-home 이라는 디렉토리로 cd 명령을 이용해서 들어갈 수가 없게 되는 것이죠.

보시면 아시겠지만 drwx--x--x 에서 rwx가 세 번 반복됩니다. 그냥 - 만 있는 것은 해당 권한이 없다는 뜻이죠. rwxrwxrwx 라고 하면 모든 권한이 다 주어진 것입니다.

이렇게 문자가 9개가 있는데, 여기에서 앞의 3개는 소유자에 대한 권한, 가운데 3개는 소유자와 같은 그룹에 속한 사람들에 대한 권한, 마지막 3개는 그 외 사람들에 대한 권한을 나타냅니다.

( soback에서는 모든 코넷 사용자들이 같은 그룹에 속해 있는 것으로 간주됩니다. 이 그룹은 root라는 관리자가 마음대로 지정해줄 수 있습니다. )

그럼 보죠. 보통의 모든 파일은 파일의 소유자가 읽고 쓸 수 있도록 설정 되어야 겠죠. 이런 경우에는 rw------- 와 같은 퍼미션을 가져야 할 것입니다. 다른 사람들은 아무것도 못하게 말입니다.

그리고 홈페이지의 경우에는 다른 사람들도 모두 볼 수는 있게 만들어줘야겠죠. 그런데 홈페이지의 내용을 읽는 것은 웹서버 프로그램, 흔히 httpd 라고 부르는 프로그램이 대신 읽어서 사용자들에게 보여주는 방식입니다.

"디스크에 저장된 홈페이지 파일" -> 웹서버 httpd -> 인터넷 회선 > 사용자의 모뎀 -> 사용자의 브라우저, 넷스케이프 등

의 과정으로 내용이 전달되는 것입니다. 이때 httpd도 엄연히 소백의 한 "사용자"로 취급되는데 특이하게 nobody 라는 아이디를 가진 것으로 취급됩니다. "아무것도 아닌 사람" 이라는 재미있는뜻이죠. :) ( 오딧세이가 외눈박이 거인 앞에서 이런 이야기를 했던가요? )

이 nobody는 일반적인 코넷 사용자와 같은 "그룹"에 속한 사용자가 아닙니다. 따라서 가운데 3개 말고, 뒤의 3개 퍼미션이 이 nobody에 적용되게 됩니다. 그래서 보통 홈페이지 파일은 rw-r--r-- 또는 rw----r-- 의 퍼미션을 갖게 됩니다. ( rw-r--r-- 에서 가운데 r은 불필요하지만 관례적으로 그냥 그렇게 하죠. )

자아, 이제 chmod 명령을 실제로 사용하는 방법으로 넘어가죠. 고등학교 다닐때 2진수, 8진수를 배우셨나요? 음. 자연계열이셨을테니, 아무래도 "수학"을 상당히 잘 하셨을텐데 말입니다.

rw-r--r-- 라는 퍼미션을 주고 싶으면 chmod 644 filename 이라고 하면 됩니다. 잘 보면 아시겠지만, 3개씩 잘라서 숫자로 적어주게 됩니다.

rw-r--r-- 을 0,1로 바꾸어보죠. 설정된 것은 1, 없는 것은 0 입니다. 따라서 110100100이 되겠죠. 이 이진수 110100100을 8진수로 바꾸게 되면 644가 됩니다. 그렇죠? 그렇죠? 그렇죠? :-)

001 은 1, 010 은 2, 011은 3, 100은 4, 101은 5, 110은 6, 111은 7이 되죠. 헥헥헥. 그래서 rwxr----x 라고 퍼미션을 주고 싶으면 쉽게 아시겠지만, chmod 741 이라고 하면 됩니다.

이 방법말고도 다르게 지정하는 방법도 있죠. 그건 man chmod 해서 읽어보세요~ :)

> 또 방법에 있어서
1]바로 chmod 755 -R *.*을 사용하면 자신의 홈 밑에 있는 폴더 와 > 각각의 폴더밑의 화일 전체에작용하는 것인가요?

오옷, 어려운 옵션까지~~ -R 이라는 것은 옵션입니다. 그래서 Recursive, 흔히 재귀적이라고 하는 알아먹지 못할 말로 번역하는데, 그 하위의 것들이 대해서도 모두 적용하라는 뜻입니다. 즉 말그대로 홈 밑에 있는 폴더, 각각의 폴더 밑의 또 폴더 등등 전체에 적용 하라는 옵션입니다.

> 2]아니면 각각의 폴더에 들어가서 사용해야만 그 폴더밑의 화일 만 적용되는 것인가요?
앞에서 설명이 되었네요.

> 3]마지막으로 게시판 폴더에는 chmod 적용하면 에러가 나는 것인가요? 여러가지 게시판 프로그램이 모두 똑같이 적용되나요?

1. 아라곤 웹게시판에서는 아무렇게나 퍼미션을 설정하면 에러가 납니다!!!! 그래서 잘 모르시는 분들을 위해서 저는 installboard 라는 스크립트를 만들어 놓았습니다. 게시판을 설치한 후에 보면 installboard 라는 스크립트가 있는데 이걸 그냥 실행시켜주면 설치가 끝납니다. 아주 간단하죠. :-)

-rwx------ 1 root root 338 Nov 22 12:35 installboard*

요 파일을 실행시켜주면 되는 겁니다. 그냥 이름을 탁 쳐주면 실행이 되죠. 그래도 안 되면 perl installboard 라고 하면 무조건 실행이 되게 됩니다.

'StoreHouse > Server' 카테고리의 다른 글

Windows 원격에서 터미널 서비스 세션끊기  (0) 2004.12.10
RedHat 9 에서DNS 설정  (0) 2004.12.10
RedHat Vim 세팅  (0) 2004.12.10
RedHat 9.0에서 Apache, MySQL, PHP, Tomcat 연동  (0) 2004.12.10
RedHat SSH 2 설치 문서  (0) 2004.12.10