Хорошая статья про настройку pure-ftpd:
http://opennet.ru/base/net/linux_pureftp.txt.html(а тут много интересных нюансов:
http://pureftpd.sourceforge.net/FAQ)
У меня, правда, дебиан, но тоже помогло. Вкратце:
1. Устанавливаем pure-ftpd. Из коробки эта штука будет пускать только под учетками, заведенными в системе, соответственно, в домашние каталоги этих учеток. Правда, это не помешает им шариться по всей файловой системе. Чтобы запереть пользователей в своих домашних каталогах, нужно создать файл /etc/pure-ftpd/ChrootEveryone со словом yes внутри (если же требуется запереть всех, кроме какой-то выделенной группы, следует вместо этого прописать её идентификатор в файле /etc/pure-ftpd/TrustedGID). Вообще, похоже, все настройки у этой штуки лежат по разным файлам с соответствующими именами(*). Непривычно как-то...
2. Для анонимного доступа нужны следующие вещи: учетная запись с именем ftp и слово no в файле /etc/pure-ftpd/NoAnonymous. С учетной записью я поступил следующим образом: создал, как это заведено в культурных домах, папки на чтение и запись:
mkdir /home/ftp/pubmkdir /home/ftp/incoming
раздал им права:
chmod -R 0777 /home/ftp/incomingchmod -R 0755 /home/ftp/pub
и создал пользователя с домашним каталогом /home/ftp:
/usr/sbin/useradd --home /home/ftp ftp
3. Для пассивного режима ещё можно указать интервал портов, по которым клиенты будут стучаться за данными, примерно так:
echo "40110 40210" > /etc/pure-ftpd/conf/PassivePortRange
Ну и не забываем прописать эти порты на роутере 8-)
4. Под дебианом не требуется, а вот под слакварью ещё приходилось запускать сервер командой:
pure-ftpd -4 -A -B -M -l unix -U 022:022 -O clf:/var/log/pureftpd.log
и добавлять эту команду в автозагрузку (/etc/rc.d/rc.local) с полным путем.
(*) Вот
отсюда вытащил список этих имён. Ниже представлены они и соответствующие им параметры командной строки (полный список лежит
тут):
-A ChrootEveryone no # запереть всех, кроме рута в домашней директории
-a TrustedGID 10 # доверенная группа с этим номером может шариться везде по ФС
-b BrokenClientsCompatibility no # говорят, помогает клиентам, некорректно придерживающимся стандартам
-c MaxClientsNumber 10 # максимальное число клиентов
-B Daemonize yes # запуск в виде демона
-C MaxClientsPerIP 3 # максимальное число подключений с одного клиента
VerboseLog no
-z AllowDotFiles yes # разрешить читать файлы, начинающиеся с точки
-D DisplayDotFiles yes # показывать файлы, начинающиеся с точки
-e AnonymousOnly no # позволять только анонимный доступ
-E NoAnonymous yes # позволять доступ только зарегистрированным пользователям
SyslogFacility ftp
DontResolve no
-I MaxIdleTime 3600 # максимальное время простоя, после которого клиент отрубается
-l pam PAMAuthentication yes # способ аутентификации (есть ещё unix)
-L LimitRecursion 2000 8
-M AnonymousCanCreateDirs no # анонимные пользователи могут создавать каталоги
-m MaxLoad 4 # не позволяет перегружать сервер анонимными загрузками
-s AntiWarez yes # запрещает скачку файлов, загруженных анонимами (определяет такие файлы по их владельцу. если ftp, то считает его загруженным анонимом)
-u MinUID 100 # запрещает коннект пользователям с идентификатором меньше заданного (видимо, чтобы под рутом не коннектились)
-w AllowUserFXP yes # позволяет FXP протокол аутентифицированным пользователям
-W AllowAnonymousFXP no # позволяет FXP протокол анонимным пользователям
-x ProhibitDotFilesWrite yes # никто, кроме доверенной группы, не может писать файлы, начинающиеся с точки
-X ProhibitDotFilesRead no # запретить читать файлы, начинающиеся с точки
-r AutoRename no # переименовывает файл загружаемый файл (*.1, *.2 и т.п.), если файл с таким именем уже есть
-i AnonymousCantUpload yes # запрет анонимам загружать
-O AltLog clf:/var/log/pureftpd.log # записывает передачи файлов в заданный файл определенного формата (clf, stats и т.п.)
-R NoChmod no # запрещает делать команду chmod
-j CreateHomeDir yes # создает домашний каталог вновь создаваемым пользователям
-k MaxDiskUsage 99 # указывает в процентах, до какой степени может быть заполнен диск
-G NoRename no # запрет переименования файлов
-Z CustomerProof yes # не позволяет пользователем выстрелить себе в ногу chmod-ом
-4 IPV4Only yes # использовать только IPv4