FTP 서비스를 사용자 별로 제공하고 싶다면?!

FTP 서비스를 사용자 별로 제공하고 싶다면?!

  • Comments 7
  • Likes

image

이번 주말은 원없이 쉬었던 것 같습니다. 아침 먹고, 자고, 점심 먹고, 자고, 저녁 먹고, 또 자고.. 먹고 자고의 연속이라 또 살이 찌지 않을까라는 걱정을 합니다. Windows Server 2008에 관련된 여러 포스팅을 지속하고 있습니다만, 한가지 준비 운동이 필요한 포스팅이 있어서, Windows Server 2003으로 이용할 수 있는 좋은 모델이 있어, 먼저 포스팅합니다. 분명히 제가 무언가를 포스팅하기 위해, 사전에 올리는 것이라고 생각하시면 됩니다. :)

IT에 조금이라도 몸담고 계셨다면, FTP라는 프로토콜을 잘 아실 것입니다. 사실 우리는 이를 서비스라고 생각하고 있죠. 서비스라고 부르고, 실제 이용하는 측면에서도 마치 FTP는 서비스다.. 라고 생각하고 지내고 있습니다. 뜬금없이 왜 FTP를 끄집어 내고 있느냐.. Windows Server 2008의 FTP 모델과의 연결을 위해서 2003에서부터 생각을 시작해야 합니다.

IIS 6.0을 이용해서 FTP를 구축하실 때, 보통 위의 그림과 같은 마법사 페이지에서 첫번째를 선택하시는 경우가 많습니다. 공통된 디렉터리를 모든 사용자가 접근하는 모델이죠. 이런 서비스 모델을 회사내에서 제공하다보면, 이런 요청을 쉽사리 받게 됩니다. 저역시도 마찬가지였습니다.

"사용자마다 자기만의 폴더를 가지고 싶어하고, 다른 사람은 자기 폴더를 접근하지 못하게 해주세요!"

"흠, 이런 경우, FTP를 제공하는 루트 폴더 밑에 사용자 별로 폴더를 만들어주고(계정 이름으로), 개개별 폴더에 대해서 본인만 접근할 수 있도록 배타적 권한 설정을 하면 되겠군.. 그런데 사용자가 너무 많네.. 어쩌지"

이 경우에 이용할 수 있는 모델이 "사용자 격리"라는 두번째 메뉴입니다. 아래와 같이 폴더를 구성합니다.

image

그림내 Angel은 도메인이름입니다. Angel 폴더 밑에 Sjbaek라는 폴더가 있습니다. 사용자 격리 모델을 이용하여 FTP 서비스를 구성하고, FTPRoot 폴더를 FTP 루트 폴더로 지정하면, Angel 도메인내 Sjbaek라는 사용자가 접근하면, Sjbaek라는 폴더로 맵핑되게 됩니다. 즉, 본인의 최상위 폴더가 Sjbaek폴더로 시작되죠. 올라가고 싶어도 올라갈 수 없습니다. LocalUser라는 폴더는 FTP 서버 로컬 SAM(Security Account Manager) DB에 들어있는 계정으로 SKA7901이라는 로컬 계정 사용자가 로그온을 하게 되면 LocalUser폴더 밑에 SKA7901로 맵핑되고, 마지막으로 Public은 익명 사용자(Anonymous)용이 되게 됩니다. 이 경우 조직에서..

"전 직원이 접근할 수 있는 폴더를 제공해야 하는데.. AllUsers라는 폴더를 모든 사용자에게 제공해주세요."

"또 난감한데.. 어떻게 하지.."

이 경우엔 웹 사이트에서 쉽게 이용하는 가상 디렉터리(Virtual Directory) - 전역적인(Global) 가상 디렉터리가 되겠죠 - 를 이용하시면, 손쉽게 제공할 수 있습니다. 사용자들은 FTP://주소/AllUsers를 입력하면, 모두 해당 폴더로 접근되게 됩니다. 여기서도 권한 설정은 됩니다.

image

마지막으로, 액티브 디렉터리에 있는 계정을 이용하여, 인증 뿐만 아니라, 본인의 FTP 루트 폴더도 서비스하고 싶습니다.

image

FTP 서비스는 단순히 액티브 디렉터리에 쿼리를 하여, FTP 폴더와 서비스를 제공하는 서버에 대한 정보를 받아와서 연결시켜주는 역할만 하게 됩니다. 액티브 디렉터리를 이용한 고립 모델을 사용하면, FTP에 로그온하는 사용자에 대해서, 액티브 디렉터리의 속성값을 통해 서비스를 제공하게 됩니다.

image

그럼 일일히, 사용자 별로, 다 속성값을 건들여야 하는가...라는 질문에는 IISFTP.VBS가 있다라고 답변드리고 싶습니다.

image

이를 이용하여, 사용자별로 속성 값을 지정해줄 수 있고, Windows PowerShell을 이용하면, 아주 간편히 이를 벌크 작업으로 돌릴 수 있겠죠. FTP에 접근할 때마다, 액티브 디렉터리에 쿼리하는 것은 성능상 이슈를 일으킬 수 있기 때문에, 10분동안 캐시하게 됩니다. 이 값에 대한 정보도 레지스트리에서 DsCacheRefreshSecs를 조정하시면 가능합니다. FTP서비스에 대한 변경은 액티브 디렉터리에서만 변경해주면 되기 때문에, FTP에 대한 중앙 관리가 손쉽게 이루어지게 됩니다. 사실, Windows Server 2008에도 FTP 서비스를 제공하고는 있습니다. 일반적으로 설치만 하시게 되면, IIS 6.0의 FTP와 별반 틀린 점이 없다고 느끼실 수 있습니다. IIS 7.0 관리도구를 열면 친절히 6.0 관리 도구로 가세요라는 메시지가 나타납니다. 정말 Windows Server 2008에서는 FTP를 6.0 레가시 모델을 그대로 사용하고 있을까요?

image

image

제가 다음에 포스팅할 Windows Server 2008 이야기가 바로 IIS 7.0용 FTP에 관련된 포스팅이 될 예정입니다. :)

- 참고 자료 -

IIS 6.0 FTP 사용자 고립 모델 관련 문서

Configuring Internet Sites and Services

---------------------------- 업데이트(2007.05.21 02:30) ----------------------------

사용자를 격리 하지 않음 모드를 이용했을 경우에 대한 내용을 추가합니다. (꽁치님의 댓글을 보고 기억나는 것이 있어서..)

image

위의 그림과 같은 폴더 구조에서 상위 ROOT를 사용자 격리 안함 모드로 FTP 서비스를 제공합니다. 이 때 일반 사용자들은 Root에 접근이 되겠죠? 이 경우 Angel이라는 사용자가 들어오면 Root 폴더가 상위 디렉터리가 되는 것이 아니라, Root\Angel 폴더가 최상위 디렉터리로 제공됩니다. Sjbaek가 들어오는 경우에도 Root\Sjbaek가 최상위 폴더로 제공되겠죠. 일반 사용자가 Root로 접근했을 때, 하위 디렉터리로 Angel, Sjbaek 폴더가 나타날 것이므로, 추가적인 권한 설정은 필요합니다. (접근을 못하게 하시고 싶은 경우), 사용자를 격리하지 않는 경우에도, 특정 사용자들은 폴더를 따로 뜯어서 서비스할 수 있습니다. 하단은 도움말을 그대로 짤라서 붙여 봅니다.

두번째 Bullet에 내용이 제가 설명한 내용입니다.

Do Not Isolate Users Mode

The Do not isolate users mode does not enforce FTP User Isolation and is designed to work like earlier versions of the FTP service in IIS. Because isolation is not enforced among the different users that log on to your FTP server, this mode is ideal for a site that offers only download capabilities for shared content or for sites that do not require protection of data between users.

In this mode, all user directories are in one level as a subdirectory of the FTP site directory. The site directory can reside either on the local computer or on a network share. When a user accesses the FTP site, the home directory is determined as follows:

• By default, the initial user directory is set to the physical path configured as the FTP site directory. If this directory does not exist, the user connection is denied.

• If a user name is supplied, the home directory is derived from the user name. For anonymous users, the derived name is anonymous. For local computer users, the derived name is the user name. For domain users, the derived name is the user name without the domain name.

• If a directory with the derived name exists in the site directory, then that directory becomes the initial log-on directory for the user.

Comments
  • 예전에 했던 프로젝트에서 그런 요청사항이 있었는데..결국 방법을 못 찾고, 각각 폴더를 만들었던 기억이 나거든요 ^^ 일부 사용자(수십명정도)만 각각의 폴더를 만들고, 나머지 사용자들에 대해선 폴더를 만들 필요가 없을때 방법이 궁금합니다..

  • 안녕하세요 꽁치님.. (꽁치님이라고 읽으면 맞나요?)

    수십명정도만 폴더를 생성하는건 결국 사용자별 고립모드를 이용하시고, 나머지 사용자들 모두에 대해서는 중간에 AllUsers로 가상 디렉터리 생성을 했던 것과 마찬가지로 모두 맵핑해야 하지 않나 싶습니다.

    또다른 방법은 AD 고립 모드를 응용하는 것으로, 특정 사용자에겐 특정 폴더를 맵핑하고, 일반 사용자들 그룹에는 하나의 폴더로 동일하게 맵핑하는 것도 방법일 수 있겠죠

  • 이전 포스트에서 살짝 소개해드린 데로, Windows Server 2008에 내장된 기본 FTP 서비스는 6.0용 FTP 서비스가 포함되어져 있습니다. IIS 4.0 시절서부터 사용자

  • 답변 감사드립니다..^^ 자주 오겠습니다.

  • 얼마전 메일을 드렸는데 잘 도착이 안되었나 봅니다.

    http://www.ntfaq.co.kr/3875

    공지 했습니다.

  • 안녕하십니까? 저는 IIS MVP 로 활동하고 있는 송원석이라고 합니다. 여기저기 오가며 뵌적은 있어도 아마 제가 정확히 누군지는 기억하지 못하실 가능성이 더 많을 것 같네요. ^_^;;;

    다름이 아니라, 제가 요즘 개인 사이트에 IIS 7.0 관련 글을 작성하고 있는데요, FTP7 과 관련하여 이 포스트와 바로 다음 포스트를 제 글에서 링크를 걸어 소개하려고 합니다. 글의 주소는 다음과 같고, 아직까지 외부에 링크가 걸리지는 않은 상태입니다. 아마 여기에 주소를 건 것이 첫 번째 링크가 되겠네요.

    http://www.egocube.pe.kr/asp_0020.asp

    그래서 미리 허락을 구하고자 글을 드립니다. 아마도 위의 글은 제 사이트와 김태영님의 사이트(http://www.taeyo.pe.kr/)에 동시에 게제가 될 확율이 높습니다.

    한 번 살펴보시고 너그럽게 허락해주시면 감사드리겠습니다.

  • 안녕하세요 송원석 MVP님..

    당연히 전 알고 있습니다. :)

    제 글은 마음껏 가져가셔도 되고요.. 도움이 되실런지는 모르겠습니다.

    CCL을 적용받기 때문에, 출처만 알려주시면 얼마든지 사용하셔도 무방합니다.^^

    좋은 기회 감사합니다.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment