У статті описується швидке налаштування FTP сервера ProFTPD в декількох різних конфігураціях.
FTP сервер ProFTPD цілком виправдовує його назву. Цей демон досить стабільний, може працювати як «самостійно», так і в складі супер-сервера inted, підтримує віруальние хости, облікові записи і багато іншого.
Плюс до всього має конфіги в стилі Apache, що робить його налаштування досить зручною та зрозумілою.
У даній статті ми коротко розглянемо установку proftpd, тому що він є в портах і, отже, в установці немає нічого цікавого.
Детально зупинимося на настройці.
Отже, перший крок - Установка.
Як було написано вище, ставиться сервер дуже просто - з колекції портів.
На цьому установка закінчена.
Конфиг лежатиме як /usr/local/etc/proftpd.conf,
а скрипт як /usr/local/etc/rc.d/proftpd
Тепер переходимо до налаштування.
Спочатку розглянемо «скелет» конфіга. Він буде містити базові настройки.
Надалі цей конфіг можна доповнювати в відповідності з завданням.
Лістинг. заготівля конфіга
# Тип сервера. standalone означає отедльний демон, а inetd - в складі супер-сервера
ServerType standalone
# Повідомлення при підключенні клієнта.
ServerIdent on «FTP Server Ready.»
# Ім'я сервера
ServerName «My FTP Server»
# Порт, на якому буде слухати сервер (21 - стандартний)
Port 21
# Маска прав доступу для нових (згружаемих) файлів.
# При цьому реальні права доступу будуть як (777 - mask), тобто маска 022 буде
# Встановлювати права 755.
# Можна вказувати свою маску для кожного каталогу.
Umask 022
# Настройки продуктивності
# Чим більше числа, тим більше клієнтів одночасно зможе обслужити сервер, проте установка
# Великого числа на слабкому залозі підвищує ймовірність DDoS атаки.
MaxInstances 30
MaxLoginAttempts 3
MaxClients 128
# «Таймаут», по закінченню яких сервер буде закривати з'єднання
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 300
# Секція, дії якої поширюються на всі сервери, описані в конфіги
# Файл, сеодержащій повідомлення вітають при підключенні
DisplayLogin .welcome
# Дозволяє перезапис файлів
AllowOverwrite on
# Налаштування обмеження за замовчуванням
# Забороняємо все і для всіх =)
DenyAll
Основа конфіга готова.
Надалі будемо дописувати до нього необхідні нам налаштування.
Простий публічний FTP сервер
Завдання дуже проста:
Необхідно налаштувати загальнодоступний «анонімний» FPT сервер, з якого користувачі зможуть завантажувати файли без введення логіна і пароля.
Також необхідно дозволити користувачам завантажувати файли в папку з ім'ям «incoming»
Лістинг. Простий публічний FTP
# Опеределяется анонімний FTP сервер c коренем в / usr / ftp
Користувач і група від яких буде працювати сервер
User ftp
Group ftp
# Алиас імені користувача.
# За стандартом прийнято ім'я anonymous. Саме на нього і ставимо алиас.
UserAlias anonymous ftp
# Відключаємо вимоги валидного шелла користувача
# Дозволяє «пускати» в систему користувачем без доступу по SSH (nologin)
RequireValidShell off
# Приховувати файли і папки користувача root
HideUser root
# Права на папку incoming і все її вкладені папки
# Дозволяємо запис
AllowAll
Перевіряємо власника кореневої папки, він повинен бути «ftp: ftp».
Тепер можна запускати сервер.
Доступ за логіном / паролем
Конфиг в буде наступним:
myuser> # Установка власника на нові файли # Включаємо запит пароля # Приховуємо файли користувача root # Дозволяємо все для нашого користувача
# Оголошуємо анонімний сервер з коренем в Домашем каталозі користувача myuser
# Від кого буде працювати демон
User myuser
Group myuser
UserOwner myuser
GroupOwner myuser
AnonRequirePassword on
HideUser root
Order Allow, Deny
AllowUser myuser
Коректне створення анонімного користувача FTP
Спочатку під FreeBSD 7.2-RELEASE користувача з ім'ям ftp не існує. Мені він знадобився для організації також і анонімного доступу до ftp-серверу під керуванням proftpd-1.3.2c.
Спершу створюємо каталог для цього користувача:
# Mkdir / home / ftp
І заводимо користувача командою:
За допомогою команди vipw перевіряємо, чи правильно створився наш новий користувач:
# Chown ftp: nogroup / home / ftp
Тепер все готово для роботи анонімного користувача з вашим ftp-сервером.
Для підтримки Windows-клієнтів потрібно приписати рядок з кодуваннями:
LangEngine on
ClientCharset UTF-8
UseEncoding UTF8 CP1251