В этой пошаговой инструкции мы рассмотрим, как установить и настроить FTP сервер для простого обмена файлов на Windows Server. Во всех версий Windows Server (а также десктопных редакциях Windows 10/11) доступна встроенная роль сервера FTP, которая реализована на базе веб сервера IIS.
Установка FTP сервера в Windows, создание FTP сайта
Чтобы установить роль FTP сервера в Windows Server, нужно открыть консоль Server Manager, запустите мастер Add Roles and Features, разверните роль Web Server (IIS) -> FTP Server и отметьте опции FTP Service и FTP Extensibility.
В Windows 10 и 11 установить компоненты FTP сервера можно через консоль Turn Windows features on or off (команда
optionalfeatures
). Разверните компонент Internet Information Services и выберите для установки службы FTP.
После установки роли вы можете создать FTP сайт. Для управления FTP сервером в Windows используется консоль управления IIS (inetmgr).
Создайте новый FTP сайт (Sites -> Add FTP Site).
- Имя FTP сайта: MyTestSite
- Корневой каталог FTP сайта: C:\inetpub\ftproot
На следующем этапе можно выбрать сертификат для шифрования и защиты FTP трафика, которые рекомендуется использовать при передаче FTP данных через открытые сети. (подробнее о настройке FTP over SSL (FTPS) в Windows). В данном случае мы не используем шифрование (опция No SSL).
На этапе Authentication and Authorization оставьте настройки по умолчанию (мы настроим права доступа позже).
Настройка прав доступа на FTP сервере в Windows
FTP сервер на Windows поддерживает два типа аутентификации пользователей:
- Anonymous Authentication – к FTP серверу может подключиться кто угодно (в качестве имени указывается anonymous или guest, а в качестве пароля — произвольный email-адрес);
- Basic Authentication – для подключения к FTP серверу пользователь должен аутентифицироваться с помощью своей учетной записи (доменной или локальной).
В нашем случае мы разрешим только
Basic Authentication
(разверните секцию FTP Authentication в настройках сайта и включите только этот режим).
Для удобства предоставления доступа к FTP сайту, создайте локальную группу ftp_users.
Создадим локального пользователя ftp_user1 и добавим его в группу:
net user ftp_user1 /add *
net localgroup ftp_users ftp_user1 /add
Затем в эту же группу добавим доменного пользователя:
net localgroup ftp_users winitpro\kbuldogov /add
Предоставьте созданной группе ftp_users права RW на каталог C:\inetpub\ftproot.
Затем нужно разрешить доступ к сайту в консоли управления FTP. Выберите раздел FTP Authorization Rules -> Add allow Rule. Создайте правило:
- Specified roles or user groups: ftp_users (разрешить доступ к сайту для указанной группы)
- Permissions: Read + Write (разрешить и чтение и запись в FTP каталог)
Теперь пользовали могут подключиться к FTP серверу. Для подключения можно использовать любой сторонний FTP клиент, или открыть FTP прямо из проводника Windows.
Укажите в адресной строке проводника Windows адрес FTP сервера в формате
ftp://192.168.13.221/
, укажите учетную запись пользователя и пароль.
Пользователь должен увидеть список файлов и папок на FTP сервере.
В данном случае все пользователи подключаются к корню FTP сайта и видят все файлы. FTP сервер в Windows поддерживает режим изоляции, при котором для каждого пользователя создается персональный каталог.
Настройка изоляции FTP пользователей в Windows
Если вам нужно ограничить доступ FTP пользователей только к своим папкам (домашним каталогам), нужно включить режим изоляции. Откройте пункт FTP User Isolation в настройка сервера.
Первые две не предполагают изоляции пользователей:
- FTP root directory – пользователь подключается в корневой каталога 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 пользователей).
Теперь внутри каталога C:\inetpub\ftproot нужно создать персональные директории для пользователей. В зависимости от типа учетной записи, путь к домашнему каталогу будет отличаться.
Тип учетной записи | Синтаксис именования домашних каталогов |
Анонимные пользователи |
%FtpRoot%\LocalUser\Public
|
Локальная учетная запись Windows |
%FtpRoot%\LocalUser\%UserName%
|
Доменная учетная запись Windows |
%FtpRoot%\%UserDomain%\%UserName%
|
Специальные учетки IIS Manager или ASP.NET |
%FtpRoot%\LocalUser\%UserName%
|
В данном примере у меня есть два пользователя, для которых я создам следующие каталог
- Локальный пользователь ftp_user1 (
C:\inetpub\ftproot\LocalUser\ftpuser1
) - Доменный пользователь resource\kbuldogov (
C:\inetpub\ftproot\resource\kbuldogov
)
Теперь при подключении FTP пользователи будут видеть файлы только в своих персональных каталогах.
Быстрая установка и настройка FTP-сервера в Windows с помощью PowerShell
Для быстрого развертывания FTP сервера на Windows можно использовать PowerShell скрипт.
Установить роль FTP сервера в Windows Server:
Install-WindowsFeature Web-FTP-Server -IncludeAllSubFeature -IncludeManagementTools
Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPServer
Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPSvc
Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPExtensibility
Создать локального пользователя и группу с помощью PowerShell:
$pass = ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force
New-LocalUser -Name ftp_user1 -Password $pass
New-LocalGroup -Name ftp_users
Add-LocalGroupMember -Group ftp_users -Member ftp_user1
Создать каталог для FTP сайта, предоставить NTFS права доступа для группы ftp_group:
$ftproot='C:\inetpub\ftproot\MyFTP'
mkdir $ftproot
New-WebFtpSite -Name MyFTP -IPAddress "*" -PhysicalPath $ftproot -Port 21
icacls $ftproot /grant "ftp_group:(OI)(CI)(F)"
Разрешить подключение без SSL:
$FtpSite="IIS:\Sites\MyFTP"
Set-ItemProperty $FtpSite -Name ftpServer.security.ssl.controlChannelPolicy -Value "SslAllow"
Set-ItemProperty $FtpSite -Name ftpServer.security.ssl.dataChannelPolicy -Value "SslAllow"
Включить basic аутентификацию:
Set-ItemProperty $FtpSite -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true
Разрешить доступ к сайту для указанной группы:
Add-WebConfiguration "/system.ftpServer/security/authorization" -Location MyFTP -PSPath IIS:\ -Value @{accessType="Allow";roles="ftp_users";permissions="Read,Write"}
Если нужно ограничить к FTP сайту доступ по IP:
Set-ItemProperty $FtpSite -Name ftpServer.firewallSupport.externalIp4Address -Value "192.168.10.101"
Создайте правило в Windows Defender Firewall, которое разрешает доступ к FTP серверу:
New-NetFirewallRule -Name "FTP 21" -DisplayName "FTP 21" -Profile All -Direction Inbound -Action Allow -Protocol TCP -LocalPort 21 -Program "%windir%\system32\svchost.exe"
Перезапустить FTP сайт:
Restart-WebItem -PSPath $FtpSite
Проверьте доступность FTP сервера с помощью командлета Test-NetConnection:
Test-NetConnection -ComputerName yourftpservername -Port 21
Подскажите как такой ftp сервер опубликовать в интернете? что бы не только локальные пользователи могли пользоваться но и внешние. спасибо
Все зависит от типа подключения к интернету и имеющийся сетевого оборудования. У вас есть белый IP адрес?
Здравствуйте, есть выделенный ip от провайдера, сервер подключен к интернету через роутер. Нужна помощь именно в публикации ftp в интернет. С локальной справился на ура, спасибо!
Вся настройка сводится в переконфигурированию роутера, чтобы он перенаправлял FTP трафик на адрес вашего локального сервера.
“Внутри каталога C: \ inetpub \ ftproot создадим каталог с именем LocalUser (имя должно полностью соответствовать, это важно !!!).” — Обязательно должно быть имя «LocalUser» — это какая то привязка, к чему?
LocalUser — означает, что будут использоваться домашние fTP каталоги локальных (не доменных) пользователей. Система при подключении по ftp локального пользователя ищет и подключает его папку из каталога LocalUser.
Просто я настраиваю FTP на Windows Server 2008 r2 и разделе Local Users and Groups нет, пользователей создавать в ACTIVE Direrory?
Похоже вы разворачиваете FTP сервер на контроллере домена Active Directory — скажем, не самое удачное решение. Если же других серверов нет, то авторизации придется использовать доменные учетные записи AD, формат пути к каталогу пользователя должен быть такой: %FtpRoot%\%UserDomain%\%UserName%
Скажите пожалуйста, не самое хорошее решение это имеется виду когда сервер FTP и контроллер домена в одном месте или просто на серверных операционных системах лучше не разворачивать FTP? У нас на предприятии есть один Windows Server 2008R2 остальное 250 клиентских машин на которых установлены Windows 7 и Windows XP, лучше будет если развернуть FTP сервер на одной из клиентских машин? Да и еще одно, что означает «% FtpRoot% \% UserDomain% \% UserName%» это имеется виду маршрут С: \\ FtpRoot \ UserDomain \ UserName \ где в папке UserName создать папки для каждого пользователя который будет создан для FTP?
Нежелательно совмещать роль FTP и контроллера домена Active Directory на одном сервере.
Думаю, в вашем случае, все-таки разворачивать FTP-сервер на Windows Server 2008R2.
По поводу пути. Например, для пользователя admin домена winitpro.ru путь к домашнему FTP каталогу может выглядеть так:
C:\ftproot\winitpro\admin
А нельзя на втором диске сделать хранилище только на диске С? (а то как-то не хочется забывать этот диск, тем больше у меня 250 пользователей)
2Дмитрий
Конечно можно, просто измените путь к домашнему каталогу в настройках FTP сайта на IIS
«Корневой каталог FTP сайта: C:\inetpub\ftproot» -то есть этот маршрут, при первоначальной настройке??
Да, это и есть корневой каталог FTP сервера
Подскажите пожалуйста, есть ли возможность как то автоматически (например из файла или каким либо другим образом) создать 20000 пользователей и создать для них изоляцию?
У меня задача для 20000 контрагентов создать ftp ресурс с которого они могли бы забирать свои файлы. Ручками создавать все 20000 очень долго. Программно могу создать файловые папки, м.б этого достаточно будет, но не понимаю как задать им сгенерированные пароли.
Учетные записи пользователей локальные или доменные?
Технически самих пользователей и их каталоги можно создать несложным скриптом на Powershell, который на входе принимает csv файл с именем пользователя и его паролем. Скрипт должен создать учетку пользователя с указанным паролем и каталог с именем пользователя.
Большое спасибо за ответы! При помощи вашей переписки понял почему после поднятия контроллера домена слетел доступ к ftp серверу.
А sFTP можно поднять на Win 2012 R2 ??
Насколько я помню, именно sFTP (FTP over SSH) штатными средствами не поддерживается. Но сам трафик FTP можно зашифровать с помощью FTPS (FTP over SSL).
Написал мануал по разворачиванию SFTP сервера:
https://winitpro.ru/index.php/2016/03/31/sftp-ssh-ftp-na-windows-server-2012-r2/
Здравствуйте.
Прошу помочь разобраться с проблемой доступа к ftp-серверу.
Поднял на хостовой системе windows server 2012 r2 ftp-сервер с изоляцией на уровне локальных пользователей. В брандмауэре автоматически создались соответствующие правила. Но доступа к ftp-серверу нет. Отключаю брандмауэр — все работает.
Правила в брандмауэре созданы автоматически. На всякий случай посмотрел их. По моему разумению они правильные.
При раскопках обнаружил что автоматически созданное правило брандмауэра блокирует 21 порт. Создал аналогичное правило в котором указал применение правила не к службе FTPSVC, а ко всем службам. После этого стал отвечать telnet на 21 порт. Но дальше не идет.
220 Microsoft FTP Service
user
501 Invalid number of parameters.
pass
503 Login with USER first.
USER
501 Invalid number of parameters.
quit
221 Goodbye.
Может проблема вызвана тем, что все поднята на хосте с активированной ролью Hyper-V?
Маловероятно, что Hyper-V тут может как то мешать, если только есть какие-то правила перенаправления входящего FTP трафика внутрь какой-то ВМ на Hyper-V.
Соединение проверяете руками или клиентом? Может следует настройки клиента перепроверить?
Добрый день!
Подскажите пожалуйста, вот есть корневой каталог FTP в котором имеются 2 каталога: LocalUser (каталог с папками пользователей) и Info (в нем хранятся разные файлы)
Всё настроил по вашей статье, четко работает, каждый пользователь видит только свой каталог.
Как сделать так, что бы каталог Info был доступен всем пользователям, помимо их личных каталогов?
Нужно включить уровень изоляции User name physical directory (enable global virtual directories).
Затем создать на корневом уровне FTP сервера виртуальный каталог Info и дать соответствующие NTFS права доступа пользователям.
Доброе время суток. Есть сеть с поднятой AD, и FTP на отдельном сервере, входящем в домен. ПОльзователи используют ресурсы FTP вводя свои имя пользователя и пароль. Возможно ли настроить авторизацию на FTP так, чтобы подхватывались учетные данные залогинившегося пользователя, и автоматом осуществлялся вход на FTP?
Приветствую!
Как я помню, Windows IIS FTP сервер поддерживает Kerberos авторизацию. Могу, ошибаться. Попробуйте по аналогии со статьей настроить https://winitpro.ru/index.php/2016/05/18/nastrojka-kerberos-avtorizacii-na-sajte-iis/
Если получится — поделитесь опытом
Здравствуйте!
Подскажите решение вопроса. Настроил всё по Вашей инструкции, всё работает идеально, но требуется иное решение изоляции, т.е. имеем три вида юзеров — 1 тип это админ «дороги» (права — чтение, запись, удаление на свою папку), 2 тип это юзер «дороги» (права — чтение, запись на свою папку), и третья учетка админ фтп (права — чтение, запись, удаление всего контента изолированных).
Задача: Чтобы админ дороги и юзер дороги (всего админов и юзеров дорог 16) видели одну и туже папку (т.е. юзер1 при входе видит свою папку юзер1 с правами чтение, запись, и админ1 видит этуже папку юзер1 при входе, но права уже чтение, запись, удаление), а при входе под админ фтп видим все папки с правами чтение, запись, удаление.
Прошу подсказать пути решения?
Вам нужен режим User name physical directory (enable global virtual directories) , а разные права на каталоги нужно раздать нужным группам пользователей через разрешения NTFS
Спасибо за ответ, с правами понятно.
Не понятно только, как изоляцию сделать
т.е. …/LocalUser/User1
…/LocalUser/User2
…
…./LocalUser/User16
Заходим под User1 видим свои папки с файлами, а вот заходим под Admin1 я тоже должен видеть только содержимое папки User1, и т.д. User2 видит своё и Admin2 видит только содержимое папки User2 и т.д.
Не представляю как именно в таком виде настроить изоляцию пользователей. Скорее всего такую схему на Windows FTP реализовать не получится. В любом случае настройка будет очень трудоемкой и конфигурироваться под каждого пользователя руками.
Как вариант можно для админа создать собственный FTP сайт, который указывает на каталог с домашними каталогами пользователя.
Добрый день настроил всё как у вас, но не могу менять права на папки через клиент filezilla
У пользователя достаточно полномочий на сервере? Проверьте, подключившись по ftp под администратором.
Установил компоненту иис и фтп, создал папки s_ftp/LocalUser/ftp где ftp — имя пользователя. s_ftp — корень. при попытке зайти на фтп — просит логин и пароль, но авторизация не проходит. Пользователь локальный, обычная аутентификация
Проверьте что включен только один тип аутентификации, а у пользователя есть NTFS разрешения на каталог.
Я делал все как было показано, только как сделать чтобы пользователь Administrator попадал не в личную папку, а в коренной каталок где мы создавали папку LocalUser?
Я сделал так:
1. Создал личную папку для администратора, в ней создал пустую папку admin(к примеру)
2. Создал виртуальную папку с именем admin указал путь к коренной папке и разрешил доступ к ней только администратору.
Теперь зайдя на ftp при переходе в папку admin мы попадаем не в пустую папку, а в корень.
Желательно указать имя виртуальной папки такое которые не придет в голову создать пользователям.
Добрый день, у меня домен. На одном из серверов IIS8, я сделал FTP сервер, завел локального пользователя (он не доменный), сделал изолированное подключение. Но мне нужно, чтобы этот пользователь подключался через FTP к папке, лежащей на другом сервере. Я сделал виртуальную папку со ссылкой на другой сервер, в диспетчере IIS содержимое папки выводится нормально, а вот при подключении к FTP пользователь видит только пустой родительский каталог, даже, если я в пути указываю название виртуальной папки.
Вопрос по привязке АД.
Вот если пользователи по возрасту и подъезду уже в группах, как внутри «FTPROOT» папки , на папку «18+» дать разрешение только взрослым ? группа «oldman»
то есть привязку делать не пользователя к папке… а к уже существующей папке ГРУППУ
Хм, админская учетная запись работает, а все остальные не срабатывают.
Сеть с поднятым Доменом, отдельно на серваке, ФТП на другой машине, что еще требуется из ролей прицепить чтобы подхватывало группу Пользователи домена к примеру?
Не понял конфигурацию вашего FTP сервера. Не обязательно подниать сервер на контролллере домена, подойдет любой рядовой сервер.
Вы хотите, чтобы у каждого пользователя домена была собвтенная ftp папка (%FtpRoot%\%UserDomain%\%UserName%) ?
Добрый день. Возникла проблема. стоит Windows Server 2008 r2,был развернут ftp, структура папок такова c:/_ext/ftp (сам ftp) и подпапки с именами 09,10,11 и.т.д.,все работало, но недавно с неделю где то назад перестал работать внешний доступ под любым пользователем (вход под данным логином и паролем невозможен),выяснилось что при включении любого параметра isolate users доступ пропадает,но если включить любой параметр do not isolate users доступ появляется,но тогда при входе на ftp под любым пользователем открывается корневая директория. Можно ли как то изолировать пользователя в одну папку без использования ftp isolation users?или как то исправить данную проблему?
Почему у вас перестала работать изоляция сказать сложно — смотрите журналы безопасности, проверьте разрешения на папки. Пользователи локальные или доменные? Какова структура папок?
Можете сделать доступ без FTP излоляции в корневую папку, а на каждой папке выставить соотвествующие NTFS разрешения, чтобы пользователи не могли открывать чужие каталоги. Можете раздать пользователям ярлыки для ftp соедиенния в конкретную папку.
Здравствуйте!
Нужно настроить FTP сервер на вирт. машине (win serv 2012) но данные (каталоги пользователей) располагаются на шаре на другом сервере входящем в домен. Два вопроса:
1) FTP сервер доступен из интернета, поэтому не хочется вводит ВМ в домен ( ВМ имеет собственное выделенное подключение в интернет). Вторым интерфейсом ВМ во внутренней сети, и видит шару. Можно ли настроить фтп сервер не вводя ВМ в домен?
2) Если ответ на первый вопрос отрицательный, то как прикрутить UNC пути?
Я в шоке. Вся учебная программа в моей шараге построена на ваших гайдах
То есть они просто копировали все скрины и текст, а потом вставляли в вордовский документ.
Они это называют своими собственными учебными разработками…
Здравствуйте, подскажите пожалуйста!
Настроен ftp с выходом в глобалку, всё работает. Появилась необходимость сделать доступ к xml файлу для чтения, без какой либо авторизации, т.к. К нему обращаться будут любые пользователи в интернете. Это возможно? Из возможностей увидел только «анонимный вход» — просит ввести почту, и «все пользователи» — я так понял, имеется ввиду все пользователи сервера.
Для анонимного входа можно указать произвольный email адрес. Доступ делайте для
Все
.Все пользователи
— это все аутентфицированные пользователю, анонимы/гости туда не попадают.Здравствуйте.
Такой вопрос: организовал на сервере 2016 иерархию через нтфс папки, поднял роль фтп сервера, в фтп сайт добавляю эти самые нтфс папки, а они не отображаются, можно это как ни будь исправить?
Под кем подключаетесь к северу? У этого пользователя есть NTFS права на папки?
Наверное поздно, но мало ли кому пригодится — проблема решается использованием симлинков. Надо создать симлинки командой MKLINK на нужные папки и разместить их в папке пользователя фтп.
А как сделать, чтобы все могли заходить без авторизации? Анонимный вход разрешен, но все равно выдаетсчя ошибка
wget ftp://10.11.116.2/csp_install.sh
—2025-02-19 16:57:29— ftp://10.11.116.2/csp_install.sh
=> «csp_install.sh»
Подключение к 10.11.116.2:21… соединение установлено.
Выполняется вход под именем anonymous …
Неверный логин.
Здравствуйте.
Вы ftp на виндовс развернули, если да, то на какой версии?
Вам надо посмотреть в настройках куда будет получать доступ anonymous только к public (это его папка по умолчанию) или в сам корень ftp сайта, в общем в настройках надо пошариться, там в принципе интуитивно понятно. Если что пишите, чем сможем — поможем.
win 2012 dc
дополнительно папка расшарена для юзеров домена с только чтением.
а в настройках чего? я через iis manager сделал эту папку с доступом по как Ftp.
В настройках FTP Authentication: Anonymous Authentication -Enable. User — anonymous (прописал. был какойто IUSR .. чтото такое)
FTP Rules поставил и Anonymous Authentication и Allusers — Read.
Свойства папки public, знать бы где она)
В общем с тегами я так и не научился работать, поэтому просто ссылки:
Дерево каталогов до Public: https://zkn.ddns.net/Public/FTP_tree_dir.png
Правило авторизации анонимуса: https://zkn.ddns.net/Public/FTP_anonymouse.png
Автор сайта, прикрути предпросмотр ответов, для таких тугих как я 😉
доп: если заходить через виндовый проводник. просит пароль для anonymous с паролье User@..
как сделать его вход безпарольным?
Здравствуйте.
Владелец сайта мои сообщения не пропустил по каким то причинам, если пропустит это, то поищите меня в телеграм по нику от моих сообщений.
net user ftp-user pass /add /active:yes
Добавляем скрытого пользователя FTP.reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /v ftp-user /t REG_DWORD /d 0
PS C:\Windows\system32> net user ftp-user pass /add /active:yes
The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.
*По ходу политика домена не дает пустой пароль
PS C:\Windows\system32> reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList» /v ftp-user /t REG_DWORD /d 0
The operation completed successfully.
*
Как бы теперь найти его. В Управлении ПК он не показывается, хотя так можно было бы обойти доменные политики для установки пароля