Настройка Pure-FTPd

Замена обработчика конфигурации

Удаляем ставшие не нужными каталоги настроек FTP-сервера:

# rm -R /etc/pure-ftpd/auth
# rm -R /etc/pure-ftpd/conf
# rm -R /etc/pure-ftpd/db

В файле /etc/init.d/pure-ftpd после строчки WRAPPER добавляем определение пустой переменной CONFIG:

CONFIG=

В том же файле строки --exec $WRAPPER заменяем на строки --exec $WRAPPER $CONFIG.

В файл /etc/defaults/pure-ftpd прописываем две переменные:

WRAPPER=/etc/pure-ftpd/pure-config.py
CONFIG=/etc/pure-ftpd/pure-ftpd.conf

Нужно проверить работу Upload-скрипта с новой обёрткой.

Конфигурация

Булево значение

Опция конфигурации Опции командной строки Описание
AllowAnonymousFXP -W --allowanonymousfxp Разрешить протокол FXP для всех пользователей. Небезопасно!
AllowDotFiles -z --allowdotfiles Разрешить анонимным пользователям читать файлы и каталоги, имя которых начинается с точки.
AllowUserFXP -w --allowuserfxp Разрешить протокол FXP для неанонимных пользователей.
AnonymousCanCreateDirs -M --anonymouscancreatedirs Разрешить анонимным пользователям создавать каталоги.
AnonymousCantUpload -i --anonymouscantupload Запретить анонимным пользователям загружать файлы в каталоги, вне зависимости от разрешений каталога.
AnonymousOnly -e --anonymousonly Разрешить вход только анонимным пользователям.
AntiWarez -s --antiwarez Запретить анонимным пользователям читать файлы, принадлежащие пользователю ftp. Обычно это файлы, загруженные другими анонимными пользователями.
AutoRename -r --autorename Не заменять существующие файлы. Новые файлы будут загружаться под именем xyz.1, xyz.2 и т.д.
BrokenClientsCompatibility -b --brokenclientscompatibility Включить поддержку клиентов с неполадками в реализации.
CallUploadScript -o --uploadscript Включить обработку загружаемых файлов скриптом pure-uploadscript.
ChrootEveryone -A --chrooteveryone Выполнять системный вызов chroot() для любого пользователя, кроме пользователя root.
CreateHomeDir -j --createhomedir Автоматически создать домашний каталог пользователя, если он не существует. Владельцем каталога назначается пользователь, а для прав доступа используется текущая маска каталогов. Для безопасности вышестоящий каталог не должен принадлежать не доверенному пользователю.
CustomerProof -Z --cutomerproof Защита от неразумных действий пользователя, например от применения chmod 0 к собственным файлам.
Daemonize -B --daemonize Запустить программу как сервер, в фоновом режиме.
DisplayDotFiles -D --displaydotfiles Показывать файлы с именами, начинающимися с точки, даже если пользователь не указал опцию -a при запросе списка файлов.
DontResolve -H --dontresolve Не выполнять обратный DNS-просмотр для IP-адресов клиентов. Может существенно увеличить скорость работы сервера, особенно для публичных FTP-серверов.
IPV4Only -4 --ipv4only Ожидать подключений только по адресам IPv4.
IPV6Only -6 --ipv6only Ожидать подключений только по адресам IPv6.
KeepAllFiles -K --keepallfiles Разрешить пользователям продолжать скачивание файлов и закачку файлов, но не их удаление. Удалять можно только пустые каталоги.
LogPID -1 --logpid Добавлять в журнал syslog идентификатор процесса PID. Не учитывается, если указана опция -f none.
NATmode -N --natmode Режим NAT - стараться использовать активный режим. Полезно если FTP-сервер находится за NAT-сервером внутри локальной сети.
NoAnonymous -E --noanonymous Разрешить только аутентифицированных пользователей. Анонимные пользователи запрещены.
NoChmod -R --nochmod Запретить пользователям (даже не анонимным) использовать команду CHMOD. Помогает защитить новичков хостинг-сервисов от ошибок.
NoRename -G --norename Опция запрещает переименовывать уже загруженные файлы, даже если пользователь владеет файлом или каталогом.
ProhibitDotFilesRead -X --prohibitdotfilesread Обычно пользователи могут и читать и писать файлы, имена которых начинаются с точки. Эта опция запрещает и читать и изменять содержимое таких файлов и каталогов.
ProhibitDotFilesWrite -x --prohibitdotfileswrite Обычно пользователи могут и читать и писать файлы, имена которых начинаются с точки. Эта опция запрещает изменять содержимое таких файлов.
VerboseLog -d --verboselog Заставляет сервер помещать в файл журнала все команды, отправляемые клиентами, за исключением команды PASS, пароль в которой заменяется на текст "". Если указать эту опцию дважды, в журнал будут записываться и ответы сервера.
NoTruncate -0 --notruncate Если уже существует файл, имя которого совпадает с именем закачиваемого, то новый файл будет сначала закачан во временный файл, а затем временный файл заменит старый файл. Эту опцию нельзя использовать совместно с виртуальными квотами.

Число

Опция конфигурации Опции командной строки Описание
MaxClientsNumber -c --maxclientsnumber Разрешить указанное максимальное количество подключенных клиентов. Учитывается значение опции -p - выбирается меньшее значение из двух: указанное в опции -c и половина указанного в опции -p. При превышении указанного количества подключений, новые подключения будут отклоняться. Значение по умолчанию - 50. В целях ограничения предпочтительнее пользоваться опцией -m.
MaxClientsPerIP -C --maxclientsperip Ограничивает максимальное количество одновременных подключений от одного IP-адреса. Это второй способ защититься от атак на отказ в обслуживании. Опция работает только в том случае, если сервер работает в самостоятельном режиме. Опция требует немного дополнительной памяти для учёта IP-адресов, но рекомендуется её использовать.
MaxDiskUsage -k --maxdiskusagepct Запретить заполнять раздел с файлами FTP более чем на указанный процент.
MaxIdleTime -I --maxidletime Задаёт максимальное время простоя в минутах. По умолчанию - 15.
MaxLoad -m --maxload Запретить анонимным пользователям скачивать файлы, если загрузка системы превысила указанное значение. Закачка файлов и получение списка файлов при этом разрешаются, как и загрузка для аутентифицированных пользователей. Пользователь не узнает об ограничении, пока не попробует скачать файл.
MinUID -u --minuid Запретить пользователей с идентификаторами ниже указанного. Ограничение не действует на пользователя, от имени которого работают анонимные пользователи.
TLS -Y --tls 0 - отключить SSL/TLS, 1 - разрешить и обычные подключения и SSL/TLS, 2 - запретить подключения, не использующие SSL/TLS, включая анонимные, 3 - запретить подключения, не использующие SSL/TLS, включая подключения для данных. Для использования SSL/TLS должен быть указан сертификат.
TrustedGID -a --trustedgid Обычные пользователи помещаются в chroot, за исключением пользователей, домашние каталоги которых принадлежат группе с указанным идентификатором. root в chroot не попадает никогда.

Два числа

Опция конфигурации Опции командной строки Описание
AnonymousRatio -q --anonymousratio Задаёт анонимным пользователям ограничение для отношения входящего на сервер трафика к исходящему от сервера. Например, значение 1:5 заставит пользователя закачать 1 мегабайт, прежде чем он сможет скачать 5 мегабайт.
LimitRecursion -L --limitrecursion Защита от DoS-атак, ограничивающая максимальное количество файлов и максимальную глубину рекурсии для команды ls. По умолчанию - 2000:5. Для снятия ограничения используется значение -1.
PassivePortRange -p --passiveportrange Задаёт диапазон TCP-портов, который будет использоваться сервером в пассивном режиме. Отметим, что эта настройка ограничивает максимальное количество клиентов половиной от количества портов.
PerUserLimits -y --peruserlimits Задаёт максимальное количество одновременных подключений от одного IP-адреса для аутентифицированных пользователей и анонимных пользователей. Например, 3:2 - разрешено устанавливать три аутентифицированных подключения или два - анонимных.
Quota -n --quota Задаёт виртуальные квоты - ограничение на максимальное количество и объём файлов. В домашнем каталоге пользователей создаётся файл .ftpquota, в котором будет отслеживаться текущее количество и объём файлов.
UserRatio -Q --userratio Задаёт отношение входящего на сервер и исходящего с сервера трафика для анонимных и не анонимных пользователей. Если указана также опция -a, то ограничение не будет распространяться на пользователей из доверенной группы.

Одно или два числа

Опция конфигурации Опции командной строки Описание
AnonymousBandwidth -t --anonymousbandwidth Задаёт ограничение для входящего на сервер и исходящего на сервер трафика для анонимных пользователей. Значения задаются в килобайтах в секунду. Чтобы задавать одно из ограничений, нужно оставить это поле пустым. Если задано ограничение, но ни справа ни слева нет двоеточия, то ограничение будет одинаково и для входящего и для исходящего трафика.
UserBandwidth -T --userbandwidth Задаёт ограничение для входящего на сервер и исходящего с сервера трафика для аутентифицированных пользователей. Значения задаются в килобайтах в секунду. Чтобы задавать одно из ограничений, нужно оставить это поле пустым. Если задано ограничение, но ни справа ни слева нет двоеточия, то ограничение будет одинаково и для входящего и для исходящего трафика.

Два шестнадцатеричных числа

Опция конфигурации Опции командной строки Описание
Umask -U --umask Задаёт маску прав доступа для новых файлов. По умолчанию для файлов - 133, для каталогов - 022. Если файлы не должны быть доступными на чтение другими пользователями, то можно задать настройку 177:077. Если файлы должны к тому же быть исполняемыми, то это будут значения 022:022 или 077:077 соответственно.

Строка

Опция конфигурации Опции командной строки Описание
AltLog -O --altlog Задаёт альтернативный формат файла журнала о загрузках и скачиваниях. Поддерживаются значения clf, stats и w3c. Например, -o clf:/var/log/pureftpd.log
Bind -S --bind Указывает на каком адресе и порту слушать подключений. IP-адрес или имя узла и порт или название сервиса указываются через запятую, но любую из частей можно не указывать.
ForcePassiveIP -P --forcepassiveip Задаёт IP-адрес, который сервер будет сообщать клиенту при работе в пассивном режиме. Полезно, например, если FTP-сервер находится за NAT-сервером - в этом случае в этой опции можно указать IP-адрес NAT-сервера.

Слово

Опция конфигурации Опции командной строки Описание
SyslogFacility -f --syslogfacility С помощью этой опции можно указать "средство" для отправки сообщений в syslog. Можно указать значение none, еслиотправлять сообщения в syslog не требуется.

Название кодировки

Опция конфигурации Опции командной строки
FSCharset -8
ClientCharset -9

IP-адрес

Опция конфигурации Опции командной строки Описание
TrustedIP -V --trustedip С помощью этой опции можно указать доверенный IP-адрес. Только с этого IP-адреса можно будет подключаться аутентифицированным пользователям. Со всех остальных адресов можно будет подключаться только анонимно.

Имя файла

Опция конфигурации Опции командной строки Описание
FortunesFile -F --fortunesfile При входе пользователя будет показываться случайное сообщение из указанного файла. Если установлена программа fortune, то сообщения будут браться из каталога /usr/share/fortune - из двоичных файлов с расширением .dat или из текстовых файлов без расширения.

Аутентификация

Все указанные методы аутентификации можно комбинировать. Порядок использования методов аутентификации определяется порядком следования опций, либо после алфавитной сортировки символических ссылок в каталоге /etc/pure-ftpd/auth/, каждая из которых указывает на соответствующий файл.

Булево значение

Опция конфигурации Опции командной строки Описание
PAMAuthentication -l pam --login pam Включает аутентификацию пользователей при помощи подсистемы PAM.
UnixAuthentication -l unix --login unix Включает аутентификацию пользователей по системному файлу паролей.

Имя файла

Опция конфигурации Опции командной строки Описание
LDAPConfigFile -l ldap: --login ldap: Включает аутентификацию по LDAP. Нужно указать файл конфигурации LDAP-клиента.
MySQLConfigFile -l mysql: --login mysql: Включает аутентификацию по базе в MySQL. Нужно указать файл с настройками аутентификации по MySQL.
PGSQLConfigFile -l pgsql: --login pgsql: Включает аутентификацию по базе в PostgreSQL. Нужно указать файл с настройками аутентификации по PostgreSQL.
PureDB -l puredb: --login puredb: Включает аутентификацию по базе пользователей PureFTPd. Этот метод аутентификации позволяет задавать более разнообразные настройки пользователей.

Сокет-файл

Опция конфигурации Опции командной строки Описание
ExtAuth -l extauth: --login extauth: Включает аутентификацию при помощи указанной внешней программы. Подробнее - в файле README.Authentication-Modules.