메뉴 건너뛰기


Developer > Development Tools


 
Serv-U를 이용한 FTP 서버 호스팅하기 - 두번째
 
첫번째 글에 이어 이번에서 실제 사용자의 계정을 생성하고 호스팅을 위한 시나리오에 맞춰 설정을 해보도록 하겠습니다.
 
1. 익명사용자를 위한 설정
 
익명사용자(Anonymous)는 계정을 발급 받지 않고 FTP서버에 접근합니다.
그러다 보니 공유된 파일을 함부로 삭제하거나 또는 함부로 등록하게 한다면 문제가 생기 소지가 있습니다.
또한 A라는 익명의 사람이 파일을 등록하고 B라는 익명의 사람이 A가 올린 파일을 읽어 볼 수 있다면 이 또한 문제입니다.
 
그래서 정책적으로 익명사용자를 위해서는 파일을 읽을 수만 있는 홈디렉토리를 만들고 파일을 올릴 수 만 있는 특정 디렉토리를 제공하면 좋을 것 입니다.
 
그래서 다음과 같이 작업합니다.
 
익명사용자는 "ftp" 혹은 "Anonymous"라고 이름으로 계정을 만들어 주면 됩니다.
물론 암호는 비워둬야 하구요. 홈디렉토리는 "E:\FTP-Folder\public"이라고 하겠습니다.
나머지는 기본 값을 사용하여 계정을 만듭니다. (당연한 이야기겠지만 앞으로 설정할 디렉토리들은 이미 실제 경로에 디렉토리가 생성되어 있어야 합니다)
 
20080603_110804.png
 
익명 사용자에서 설정 중 "Dir Access"에 가서 홈디렉토리로 지정한 "E:\FTP-Folder\public"이라는 디렉토리는 읽기만 가능하도록 등록하구요. 파일을 올릴 수 있는 있는 디렉토리로 "E:\FTP-Folder\incomming"이라는 디렉토리를 등록합니다. 권한은 "Write", "List", "Inherit"만을 선택합니다.
(필요에 따라서는 디렉토리 Create권한을 주는 것도 생각할 수 있습니다.)
 
20080603_111137.png
 
여기까지 하고 FTP클라이언트(저는 알FTP를 사용하였음)를 통해 익명 사용자로 접속해 보면 홈디렉토리가 보이게 됩니다. 하지만 "E:\FTP-Folder\incomming" 디렉토리는 보이지 않는 것을 알 수 있습니다. 이는 계정을 만들때 "Lock user in home directory"가 기본 값으로 체크되었기 때문입니다. 이는 익명 사용자가 자신의 기본홈디렉토리를 벗어 날 수 없도록 만듭니다.
이를 해결하기 위해 public디렉토리 밑에 incomming디렉토리를 맵핑시키면 됩니다.
이를 위해 트리 패널에서 ["도메인">"Settings"]을 클리하고 설정 패널의 "Virtual Paths"를 선택해서 위쪽의 "Virtual path mappings"란에 "Add"버튼을 클릭하여 다음과 같이 입력합니다.
 20080603_113024.png
 
20080603_113114.png
 
20080603_113144.png
 
3단계로 입력하였는데 첫번째 단계에 입력한 디렉토리를 두번째 단계에 입력한 디렉토리 밑으로 세번째 단계에 입력한 이름으로 맵핑하겠다는 의미입니다.
즉, "E:\FTP-Folder\incomming" 디렉토리를 "E:\FTP-Folder\public" 디렉토리 밑으로 incomming이라는 이름으로 메달겠다는 의미입니다.
참고로 첫번째 단계에는 UNC(예 \\remotecom\share-folder)와 같은 형태를 사용할 수 있으며 "%USER%"를 경로 중에 사용할 수 있습니다. %USER%는 로그인한 사용자의 이름으로 대치됩니다.
두번째 단계에는  UNC와 %HOME%, %USER%를 사용할 수 있습니다. %HOME%은 로그인한 사용자의 홈디렉토리 경로를 의미합니다.
 
이렇게 설정했다면 하단에 "Apply"버튼을 클릭하고 다시한번 FTP클라이언트로 접속해 봅니다.
 
20080603_114805.png
 
이제 incomming디렉토리가 보입니다.
이미 우리가 설정했던대로 "/"디렉토리는 읽기만 가능하고 "/incomming"디렉토리는 쓰기만 가능합니다. 테스트는 여러분이 직접해보세요.
 
2. 내부직원을 위한 설정
 
내부직원은 다음과 같은 정책으로 권한을 부여해야 한다고 가정합시다.
 
- 직원별로 개인의 공간을 사용하여 자신만의 파일을 올리고 수정하는 디렉토리가 필요합니다. (일반적으로 홈디렉토리가 되겠죠.)
- 일반 파일서버처럼 내부직원들 끼리 파일을 읽고, 쓰기고 수정하기가 가능한 "E:\DATA"라는 공개 디렉토리를 공유해야 합니다.
- 직원 개인 갖은 파일들 중 일부를 공유는 하나 다른 사람은 읽기만 가능한 디렉토리가 필요합니다. (이를 "E:\FTP-Folder\user"라는 디렉토리로 하겠습니다.)
- 외부 익명의 사용자들이 접근하는 폴더에 내부직원은 읽고, 쓰기가 모두 가능해야 합니다.
 
좀 복잡하네요. 하지만 차근 차근 설정하면 뭐 그리 어렵지 않습니다.
 
2.1 그룹 생성 및 설정
 
위의 조건을 살펴보면 홈디렉토리 처럼 개인별로 적용되야 하는 부분도 있고 공개 디렉토리와 같이 내부 직원 모두에게 공통적으로 적용되야 하는 부분들도 있습니다.
공통적인 부분은 한번만 설정하여 모두에게 적용하면 유지, 관리에 편리하겠죠. (이 그룹기능을 이용하면 부서별로 혹은 직급별로 그룹지어 설정도 가능합니다.)
그래서 staff라는 그룹을 만들어서 공통적인 부분을 설정하도록 하지요.
설명을 쉽게 하기 위해 staff그룹에 scott과 tiger라는 계정을 만들도록 하겠습니다.
 
트리패널에서 ["도메인" > "Groups"]에서 오른쪽 버튼 클릭하고 "New Group"을 클릭합니다.
그리고 만들 그룹이름을 입력합니다. 여기서는 staff가 되겠죠?
 
20080603_120416.png
 
 그룹을 만든 다음 설정패널의 "Dir Access"에서 다음 그림과 같이 설정합니다.
 
 20080603_120525.png
 
 첫번째 설정부터 살펴보면 "E:\DATA"는 공개폴더로 staff 그룹은 모두 읽고, 쓰기가 가능해야 함으로 Excute를 제외한 모든 권한을 제공합니다.
 
두번째 설정은 나를 제외한 다른 사람들이 개인적으로 공유한 디렉토리로서 일반적으로 읽기만 가능하도록 합니다. 특히 "E:\FTP-Folder\user" 라는 디렉토리는 그 밑으로 scott과 tiger라는 디렉토리도 있게 만들어 주세요. 나중 맵핑을 해서 사용할 것입니다.
 
세번째 설정과 네번째 설정은 익명사용자들이 접근하는 디렉토리인데 직원이 이 디렉토리에 접근하여 읽고 쓰기가 모두 가능해야 함으로 읽기 쓰기모든 권한을 부여합니다.
 
지금 설정한 값들은 staff그룹에 속한 사용자는 위에서 설정한 디렉토리에 정해진 권한으로 접근할 수 있다는 것을 설정한 것입니다.
하지만 staff에 계정을 만들더라도 홈디렉토리에서 벗어날 수 있게 하지않는 한 설정한 위의 디렉토리가 보이지 않습니다.
그래서 각각의 디렉토리를 맵핑해서 각 계정의 홈 디렉토리에서 사용가능한 폴더가 바로 보이도록 해 보겠습니다.
 
트리패널의 ["도메인" > "Settings"]에서 "Virtual Paths"탭에 가서 다음과 같이 설정합니다.
 
20080603_143622.png
 
위에서 두번째는 익명사용자를 위해 이전에 설정한 거구요.
첫번째에 설정한 값은 각 사용자의 홈디렉토리에 "E:\Data" 디렉토리를 "data"라는 이름으로 메달아라(맵핑해라)라는 의미이구요.
세번째 설정은 각 사용자의 홈디렉토리에 "E:\FTP-Folder\public" 디렉토리를 "public"이라는 이름으로 메달아라(맵핑해라)라는 의미이구요.
네번째 설정은 각 사용자의 홈디렉토리에 "E:\FTP-Folder\user" 디렉토리를 "user"라는 이름으로 메달아라(맵핑해라)라는 의미이구요.
다섯번째 설정은 각 사용자의 홈디렉토리에 "E:\FTP-Folder\user\" 디렉토리에 있는 자기자신의 이름으로된 폴더는 특별히 "share"라는 이름으로 메달아라(맵핑해라)라는 의미입니다.
 
눈여겨 볼것은 다섯번째는 /user에 자신의 이름의 디렉토리가 /share와 같은 디렉토리가 된다는 것입니다.
 
2.2 계정 생성 및 설정
 
이제 staff그룹에 원하는 계정을 만들면 됩니다. 직원으로 scott과 tiger라는 사람이 있다고 한다면...
 
트리패널에서 ["도메인" > "Users"]를 오른쪽 클릭해서 "New User"를 선택합니다.
새 계정으로 scott과 tiger를 다음과 같은 설정으로 생성합니다.
 
20080603_144454_copy.png
 
 
20080603_144538.png
 
뭐 별다른건 없고 개인 홈디렉토리가 있다는 것과 Group을 staff로 지정했다는게 특이하면 특이하죠.
 
이미 scott과 tiger는 staff그룹에 속해 있기 때문에 "Dir Access"를 보면 4개의 디렉토리가 자동으로 설정되어 있음을 알 수 있습니다.
이제 홈디렉토리인 "E:\FTP-Folder\scott"에 Excute를 제외한 모든 권한을 부여합니다. (tiger도 마찬가지로...)
여기에 아까 맵핑에서 설정한 share라는 맵핑된 폴더를 사용하기 위해 "E:\FTP-Folder\user\scott"에 등록하고 권한을 Excute를 제외한 모든 권한을 부여합니다. (tiger도 마찬가지로...)
다 설정된 화면은 다음과 같이 보이겠죠?
20080603_145050.png
 
이제 설정이 모두 끝났습니다.
여기서 한가지만 더 설명하자면 각 계정의 홈디렉토리에는 /user 라는 맵핑된 디렉토리와 /share라는 맵핑된 디렉토리가 있습니다.
/user라는 디렉토리 안에는 타인의 계정이름의 폴더가 존재하고 그 안에 있는 파일들은 읽기만 가능합니다.
그리고 /share라는 디렉토리는 내가 타인에게 제공하기 위한 디렉토리인데 자신은 이 디렉토리를 읽고 쓰기가 모두 가능합니다.
그런데 이 /share라는 디렉토리는 /user라는 디렉토리 밑의 자기 계정이름의 디렉토리와 연결되어 있어 타인에게도 보여지게 됩니다.
 
이제 설정이 끝났으니 scott이나 tiger라는 계정으로 FTP에 접속해 보도록 하세요.
 
20080603_145635.png
 
정상적으로 설정하였다면 위와 같이 보여야 합니다.
각 디렉토리별로 권한이 맞는지에 대한 테스트는 여러분이 직접해보시길...  
 
 
 
 
 
 
Creative Commons License
Creative Commons License이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Copyright 조희창(Nicholas Jo). Some rights reserved. http://bbs.nicklib.com