как настроить FTP с IIS, чтобы разрешить удаленному пользователю загружать файл, используемый другой локальной программой

Вопрос или проблема

Один компьютер с Windows настроен как FTP-сервер с помощью Internet Information Services (IIS). Однако удаленные пользователи не могут получить доступ к файлу, который используется какой-либо программой (например, к файлам журналов, которые продолжают записываться). Удаленные пользователи входят на FTP с помощью библиотеки ftplib на Python и получают ошибку вроде “не удается получить доступ к файлу”. Как это исправить? Спасибо.

Есть другой компьютер с Windows, на котором используется “FileZilla Server” для организации FTP. Сначала мы столкнулись с той же ошибкой. После проверки “Опции -> Разное -> Разрешить загрузку файлов, которые открыты для записи другим процессом?” удаленный пользователь смог получить доступ к открывающемуся файлу на FTP-сервере. Есть ли аналогичные настройки в IIS?

Ответ или решение

Для настройки FTP-сервера на Windows с использованием Internet Information Services (IIS), чтобы разрешить удалённым пользователям скачивать файлы, которые используются другими локальными программами (например, файлы логов, к которым осуществляется запись), выполняйте следующие шаги.

1. Установка IIS и включение FTP

Если IIS ещё не установлен на вашем сервере, выполните следующие действия:

  • Перейдите в "Панель управления" > "Программы и компоненты" > "Включение или отключение компонентов Windows".
  • Найдите "Internet Information Services" и установите нужные компоненты, включая "FTP-сервер".

2. Настройка FTP-сервера

  1. Создайте FTP-сайт:

    • Откройте "Диспетчер IIS".
    • Щёлкните правой кнопкой мыши на "Sites" и выберите "Добавить FTP-сайт".
    • Укажите имя сайта и путь к папке, содержащей файлы, которые вы хотите предоставить для загрузки.
  2. Настройте аутентификацию:

    • На этапе конфигурации выберите "Basic" для аутентификации и настройте разрешения доступа к FTP (чтение/запись).
  3. Настройте авторизацию:

    • В разделе "Authorization" предоставьте доступ пользователям или группам, которым необходимо разрешить загрузку файлов.

3. Разрешение доступа к открытым файлам

К сожалению, в IIS нет встроенной опции, аналогичной той, что есть в FileZilla (разрешение на скачивание файлов, которые открыты для записи). Однако вы можете попробовать следующие подходы:

Опция 1: Использование системных настроек

  • Создание символической ссылки: Создайте символическую ссылку на файл или папку, чтобы она имела другой путь доступа.
  • Использование инструментов сторонних разработчиков: Например, можно использовать библиотеку Samba или WebDAV, которая зачастую может обрабатывать открытые файлы.

Опция 2: Использование PowerShell или других программных средств

Напишите скрипт на PowerShell, который копирует открытый файл (например, лог-файл) в другую папку, откуда он будет доступен для загрузки. Например:

Copy-Item "C:\path\to\open\file.log" "C:\path\to\ftp\folder\file_copy.log" -Force

Опция 3: Настройка прав доступа

Также важно убедиться, что у IIS есть необходимые права доступа к файлам:

  • Проверьте права на уровень NTFS, чтобы убедиться, что учетная запись, используемая для IIS, имеет доступ к нужным файлам.
  • Убедитесь, что на этапе аутентификации пользователя FTP правильно настроена передача прав.

4. Тестирование связки

После завершения настройки обязательно:

  • Проверьте соединение с FTP с локального компьютера.
  • Используйте ftplib в Python для подключения к вашему FTP-серверу.
  • Попробуйте скачать файл, чтобы убедиться, что он доступен для скачивания.

Заключение

Обратите внимание, что особенностью FTP-сервера IIS является то, что он не позволяет загружать файлы, которые открыты для записи другими процессами. Для достижения аналогичной функциональности как в FileZilla, вам может потребоваться использование дополнительных методов, таких как создание дубликатов или временных файлов.

Оцените материал
Добавить комментарий

Капча загружается...