FTP сервер ProFTPD вполне оправдывает его название. Этот демон довольно стабильный, может работать как "самостоятельно", так и в составе супер-сервера inted, поддерживает вируальные хосты, учетные записи и многое другое. Плюс ко всему имеет конфиги в стиле Apache, что делает его настройку весьма удобной и понятной.
В данной статье мы вкратце рассмотрим установку proftpd, т.к. он имеется в портах и, следовательно, в установке нет ничего интересного. Подробно остановимся на настройке.
Итак, первый шаг — Установка. Как было написано выше, ставится сервер очень просто – из коллекции портов.
Пишем:
Листинг :
# cd /usr/ports/ftp/proftpd # make # make install # make clean
На этом установка закончена. Конфиг будет лежать как /usr/local/etc/proftpd.conf, а скрипт как /usr/local/etc/rc.d/proftpd
Теперь переходим к настройке. Сначала рассмотрим "скелет" конфига. Он будет содержать базовые настройки. В дальнейшем этот конфиг можно дополнять в соотвествии с задачей.
Листинг :
# Тип сервера. standalone означает отедльный демон, а inetd – в составе супер-сервера ServerType standalone
# Сообщение при подключении клиента. ServerIdent on "FTP Server Ready."
# Имя сервера ServerName "My FTP Server"
# Контактная информация админа ServerAdmin admin@myhost.ru
# Порт, на котором будет слушать сервер (21 - стандартный) Port 21
# Маска прав доступа для новых (згружаемых) файлов. # При этом реальные права доступа будут как (777 - mask), т.е. маска 022 будет # устанавливать права 755. # Можно указывать свою маску для каждого каталога. Umask 022
# Настройки производительности # Чем больше числа, тем больше клиентов одновременно сможет обслужить сервер, однако установка # большого числа на слабом железе повышает вероятность DDoS атаки. MaxInstances 30 MaxLoginAttempts 3 MaxClients 128
# "таймауты", по истечению которых сервер будет закрывать соединение TimeoutLogin 120 TimeoutIdle 600 TimeoutNoTransfer 900 TimeoutStalled 300
# Показывать сообщения приветвия только после прохождения авторизации. # Актуально для "закрытых" FTP-серверов в целях безопасности. DeferWelcome on
# Секция, действия которой распространяются на все сервера, описанные в конфиге <Global> # Файл, сеодержащий сообщения привествия при подключении DisplayLogin .welcome
# Разрешает перезапись файлов AllowOverwrite on </Global>
# Настройка ограничения по умолчанию # Запрещаем всё и для всех =) <Limit ALL> DenyAll </Limit>
Основа конфига готова. В дальнейшем будем дописывать к нему необходимые нам настройки.
Задача очень проста: Необходимо настроить общедоступный "анонимный" FPT сервер, с которого пользователи смогут скачивать файлы без ввода логина и пароля. Также необходимо позволить пользователям загружать файлы в папку с именем "incoming"
Предположим, что физически корневая папка расположена по адресу /usr/ftp. Называется "конрневая папка", т.к. для пользователей она будет просто / Всё, что находится в этой папке, будет доступно по FTP. Папка для загрузки файлов раcположена непосредственно в корневой папке.
Листинг :
# Опеределяет анонимный FTP сервер c корнем в /usr/ftp <Anonymous /usr/ftp> # Пользователь и группа от которых будет работать сервер User ftp Group ftp
# Алиас имени пользователя. # По стандарту принято имя anonymous. Именно на него и ставим алиас. UserAlias anonymous ftp
# Разрешить авторизацию только по алиасу # это значит что AuthAliasOnly on
# Отключаем требования валидного шелла пользователя # позволяет "пускать" в систему юзером без доступа по SSH (nologin) RequireValidShell no
# Скрывать файлы и папки пользователя root HideUser root
# Права по умолчанию для сервера # Разрешаем авторизацию, чтение файлов и перемещение по папкам <Limit LOGIN READ DIRS> AllowAll </Limit>
# Права на папку incoming и все её вложенные папки # Разрешаем запись <Directory incoming/*> <Limit WRITE> AllowAll </Limit> <Directory> </Anonymous>
Проверяем владельца корневой папки, он должен быть "ftp:ftp". Теперь можно запускать сервер.
Задача состоит в следующем: Дать полный доступ пользователю к его домашней папке с авторизацией по логину/паролю данного пользователя.
Конфиг в будет следующим:
Листинг :
# Объявляем анонимный сервер с корнем в домашем каталоге пользователя myuser <Anonymous ~myuser> # От кого будет работать демон User myuser Group myuser
# Установка владельца на новые файлы UserOwner myuser GroupOwner myuser
# Включаем запрос пароля AnonRequirePassword on
# Скрываем файлы пользователя root HideUser root
# Разрешаем все для нашего пользователя <Limit ALL> Order Allow, Deny AllowUser myuser </Limit> </Anonymous>
В статье рассмотрены только простые примеры, при помощи которых можно быстро поднять FTP сервер. ProFTPD позволяет производить очень гибкую настройку, поэтому вариантов конфигураций очень много. Приводить хотя бы часть из них в статье считаю бессмысленым.