Завдяки можливості ізоляції користувачі можуть працювати тільки зі своїми каталогами, і не можуть піднятися вище по дереву каталогів FTP, тому що каталог верхнього рівня користувача відображається для нього як корінь служби FTP. Таким чином можна запобігти доступ користувачів до чужих даними на FTP сервері. Ізоляція FTP користувачів широко застосовується ISP / ASP провайдерами, коли потрібно надати індивідуальний доступ різним користувачам до одного файлового сховища.
Встановити сервіс FTP можна через консоль Server Manager, зазначивши опції FTP Service і FTP Extensibility в розділі Web Server (IIS) -> FTServer.
Також можна встановити роль FTP сервера однією командою Powershell:
Створюємо FTP сайт, заводимо користувачів, налаштовуємо права
Відкриємо консоль управління IIS (Internet Information Service Manager).
І створимо новий FTP сайт (Sites-> AddFTPSite).
Ім'я FTP сайту: MyTestSite
Кореневої каталог FTP сайту: C: \ inetpub \ ftproot
Для захисту переданих даних можливо налаштувати SSL (в цьому випадку всі передані по мережі дані і паролі / учеткі ftp-користувачів будуть зашифровані), але в нашій демонстрації це не обов'язково. Всі інші настройки залишаємо стандартними.
Виберемо наш FTP сайт і в секції FTPAuthentication (Аутентифікація) відключимо анонімну аутентифікацію Anonymous Authentication. Basic Authentication повинна бути включена.
Створимо користувачів FTP, припустимо, це будуть облікові записи ftp_user1, ftp_user2 і ftp_user3. Також створимо групу ftp_users. в яку включимо цих користувачів. Створити користувачів можна в розділі Local Users and Groups консолі Computer Management.
Або з командного рядка:
Точно так же створимо ще двох користувачів.
Надамо створеній групі ftp_users права (RW) на каталог C: \ inetpub \ ftproot.
Усередині каталогу C: \ inetpub \ ftproot створимо каталог з ім'ям LocalUser (ім'я має повністю відповідати, це важливо.). Потім всередині C: \ inetpub \ ftproot \ LocalUser створимо три каталогу з іменами створених нами користувачів: ftp_user1, ftp_user2, ftp_user3.
Примітка. Залежно від типу облікових записів необхідно створити такі структури каталогів (під% FtpRoot% \ мається на увазі корінь сайту FTP, в нашому випадку це C: \ inetpub \ ftproot \):
Тип облікового запису
Синтаксис іменування домашніх каталогів
Повернемося в консоль IIS і в розділі сайту FTPAuthorization Rules створимо нове правило (Add AllowRules), в якому вкажемо, що група ftp_users повинна мати права на читання і запис (дозволу Read і Write).
Перейдемо до налаштування ізоляції користувачів FTP. Ізоляція FTP користувачів налаштовується на рівні сайту FTP, а не всього сервера.
В налаштуваннях FTP сайту відкрийте пункт FTP User Isolation.
У цьому розділі є кілька налаштувань. Перші дві не передбачають ізоляції користувачів:
- FTP root directory (ftp-сесія користувача починається з кореневого каталогу ftp-сайту)
- User name directory (користувач починає роботу з фізичного / віртуального каталогу з ім'ям користувача. Якщо каталог відсутня, сесія починається з кореневого каталогу ftp-сайту)
Наступні 3 опції представляють різні режими роботи ізоляції користувачів:
- User name directory (disable global virtualdirectories) - передбачає, що ftp-сесія користувача ізольована фізичним або віртуальним каталогом ім'я якого відповідає імені користувача ftp. Користувачі бачать тільки власний каталог (для них він є кореневим) і не можуть вийти за його рамки (до вищестоящого каталог дерева FTP). Будь-які глобальні віртуальні каталоги ігноруються.
- User name physical directory (enable global virtual directories) - передбачається, що FTP-сесія користувача обмежена (ізольована) фізичним каталогом з ім'ям облікового запису користувача FTP. Користувач не може перейти вище свого каталогу за структурою FTP. Однак користувачеві доступні всі створені глобальні віртуальні каталоги.
- FTP home directory configured in Active Directory - FTP-користувач ізолюється в рамках свого домашнього каталогу, заданого в настройках його облікового запису Active Directory (властивості FTPRoot і FTPDir)
Важливо. Якщо глобальні віртуальні директорії активні, все користувачі можуть отримати доступ до всіх віртуальним каталогам, налаштованим в корені FTP сайту (при наявності відповідних NTFS прав доступу).
Вкажіть ім'я та пароль користувача
І ми отримаємо доступ до домашнього каталогу з даними користувача (що є для користувача коренем FTP сайту). Як ми бачимо, сесія користувача є ізольованою і користувач бачить тільки свої дані.
Порада. При анонімному підключенні до FTP сайту - сесія буде обмежена каталогом LocalUser \ Public (природно каталог Public повинен бути створений попередньо).
Облікові записи користувачів локальні або доменні?
Технічно самих користувачів і їх каталоги можна створити нескладним скриптом на Powershell, який на вході приймає csv файл з ім'ям користувача і його паролем. Скрипт повинен створити учетку користувача з зазначеним паролем і каталог з ім'ям користувача.
Малоймовірно, що Hyper-V тут може як то заважати, якщо тільки є якісь правила перенаправлення вхідного FTP трафіку всередину якийсь ВМ на Hyper-V.
З'єднання перевіряєте руками або клієнтом? Може слід настройки клієнта перевірити ще раз?