



Итак, приступаем к установке сервера с поддержкой виртуальних юзеров в мускуле.
Ищем пакет в портах:
| # whereis pure-ftpd pure-ftpd: /usr/ports/ftp/pure-ftpd | 
Начинаем инсталяццию:
| # cd /usr/ports/ftp/pure-ftpd && make install clean && rehash | 
Опции интуитивно понятные, но для наглядности приведу список.
| [ ] LDAP Support for users in LDAP directories [X] MYSQL Support for users in MySQL database [ ] PAM Support for PAM authentication [ ] PGSQL Support for users in PostgreSQL database [ ] TLS Support for TLS (experimental) [X] PRIVSEP Enable privilege separation [X] PERUSERLIMITS Per-user concurrency limits [X] THROTTLING Bandwidth throttling [ ] UPLOADSCRIPT Support uploadscript daemon [X] UTF8 Support for charset conversion [X] SENDFILE Support for the sendfile syscall [X] LARGEFILE Support downloading files larger than 2Gb [X] VIRTUALCHROOT Follow symlinks outside a chroot jail [X] ANONRESUME Allow anonymous user to resume file upload [ ] ANONRENAME Allow anonymous user to rename file [ ] ANONDELETE Allow anonymous user to delete file | 
Сообщим фре, что сервер нужен при каждой загрузке:
| # echo '# Pureftpd FTP Server' >> /etc/rc.conf | 
Займемся созданием пользователя фтп:
| # adduser  | 
Начинаем консумацию с БД:
| # mysql –u username –p Query OK, 1 row affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) # mysql -u pureftpd -p pureftpd < ftp.sql | 
А вот. собственно и текст дампа (импортировать можно с помощью вкладки SQL в PhpMyAdmin):
| use pureftpd;             create table `users` ( insert into pureftpd.users VALUES ('test',MD5('test'),65534, 31, '/usr', 100, 50, 75, 75, '*', 'Ftp user (for example)', '1', 0, 0); | 
Настраиваем сервер, редактируя /usr/local/etc/pure-ftpd.conf до следующего состояния:
| ChrootEveryone yes | 
Ну и пояснительная записка;):
| # Для запуска Pure-FTPd с этой конфигурацией, вместо параметров # командной строки, запустите такую команду: # /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf # # Не забудте изучить документацию на сайте, для получения # полного списка команд - http://www.pureftpd.org/documentation.shtml # Chroot`ить всех пользователей в их хомяках ChrootEveryone yes             # Если в предыдущей опции было выбрано "no", то члены следующей  # TrustedGID 100             # Включить "фичи" совместимости, для кривых клиентов              # Максимальное число одновременных юзеров  # Работать в фоне (демоном) Daemonize yes # Максимальное число одновременных соединений с одного IP MaxClientsPerIP 8             # Если вы хотите логировать все команды клиентов, то в этом  VerboseLog no             # Показывать или нет файлы, начинающиеся с точки, даже когда клиент  DisplayDotFiles yes             #Не разрешать аутентифицированных юзеров - этот FTP  AnonymousOnly no # Запретить анонимоусов - FTP тока для регистрованных юзеров. NoAnonymous no             # Средства syslog (auth, authpriv, daemon, ftp, security, user, local*)  # FortunesFile /usr/share/fortune/zippy             # Не резольвить имена хостов в логах. Логи становятся менее информативными,  DontResolve yes             # Максимальное время простоя (по окончании рвётся коннект), в минутах  # Файл конфигурации LDAP (смотрите README.LDAP) # LDAPConfigFile /etc/pureftpd-ldap.conf # Файл конфигурации MySQL (смотрите README.MySQL) MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf # Файл конфигурации Postgres (смотрите README.PGSQL) # PGSQLConfigFile /etc/pureftpd-pgsql.conf # база данных юзеров PureDB (смотрите README.Virtual-Users) # PureDB /etc/pureftpd.pdb # путь к сокету pure-authd (смотрите README.Authentication-Modules) # ExtAuth /var/run/ftpd.sock             # Если нужно подключить PAM аутентификацию раскомментируйте  # PAMAuthentication yes             # Если нужна системная, Unix аутентификация (/etc/passwd),  # UnixAuthentication yes             # Пожалуйста, отметтьте, что LDAPConfigFile, MySQLConfigFile,  LimitRecursion 2000 8 # Имеют ли право анонимоусы создвать новые директории? AnonymousCanCreateDirs no             # Если система загружена более, чем указанное тут значение, то  MaxLoad 4             # Диапазон портов для пассивного соединения. Если у вас файрволл рубает  # PassivePortRange 30000 50000             # Принудительный IP адрес в PASV/EPSV/SPSV ответах. - для NAT.  # ForcePassiveIP 192.168.0.1 # Соотношение upload/download для анонимоусов. # AnonymousRatio 1 10             # Соотношение upload/download для всех юзеров.  # UserRatio 1 10             # Запретить скачку файлов владельцем которых является "ftp", т.е.  # AntiWarez yes # IP адрес/порт на которых слушаем (дефолт = все IP и порт 21). #Bind 192.168.254.254,21 # Максимальная скорость для анонимоусов в KB/s # AnonymousBandwidth 8             # Максимальная скорость для всех юзеров (включая анонимов) в KB/s  # UserBandwidth 8             # Маска для создаваемых файлов.  # 177:077             # umask - это такое число, при вычитании которого из максимума (777) и  Umask 133:022             # Минимальный UID с которым юзер будет пущен.  
             # Разрешить передачу FXP для анонимоусов и не-анонимоусов  AllowAnonymousFXP no             # Пользователи не могут удалять и изменять файлы начинающиеся на точку('.')  # Запретить чтение файлов начинающихся с точки (.history, .ssh...) ProhibitDotFilesRead no             # Никогда не перезаписывать файлы. Когда имя, для закачиваемго файла уже  AutoRename no # Запретить анонимным юзерам загружать новые файлы (no = аплоад разрешён) AnonymousCantUpload no             # Только подключения к этому IP адресу могут быть не анонимными. Вы  #TrustedIP 10.1.1.1 # Если вы хотите чтобы PID добавлялся в каждую линию лога, # то раскомемнтируйте следующую линию. #LogPID yes             # Создавать дополнительный лог-файл с логом в формате типа "apache":  # AltLog clf:/var/log/pureftpd.log             # Создавать дополнительный лог-файл в формате оптимизированном для  # AltLog stats:/var/log/pureftpd.log             # Создавать ещё один лог с переданными файлами в стандарте W3C # AltLog w3c:/var/log/pureftpd.log             # Отключить команду CHMOD. Пользователи не смогут менять разрешения  #NoChmod yes # Позволить юзерам закачивать но не удалять файлы. #KeepAllFiles yes             # Автоматически создавать домашнюю директорию пользователя,  #CreateHomeDir yes             # Включить виртуальную квоту. Первое число - максимальное число файлов.  #Quota 1000:10             # Если pure-ftpd скомпилен с поддержкой standalone режима, вы можете изменить  #PIDFile /var/run/pure-ftpd.pid             # Если pure-ftpd скомпилен с поддержкой pure-uploadscript,  #CallUploadScript yes             # Эта опция полезна на серверах, гда позволен аплоад анонимоусам.  MaxDiskUsage 99             # Установите 'yes' в этой опции если хотите разрешить юзерам  #NoRename yes # Включить 'customer proof': какая-то ошибка, типа 'chmod 0 public_html', CustomerProof yes             # Число параллельных процессов. Работает тока если сервер был  #PerUserLimits 3:20             # Когда загружен файл на сервер, и есть предыдущая версия (с тем же именем),  #NoTruncate yes             # Эта опция может принимать три значения:  # TLS 1             # Слушается тока IPv4 адрес в режиме standalone (т.е. IPv6 отключен)  IPV4Only yes             # Слушается тока IPv6 адрес в режиме standalone (т.е. IPv4 отключен)  # IPV6Only yes             # Поддержка UTF-8 для имён файлов (RFC 2640)  #ClientCharset cp1251 | 
"Обретаем зрение" с помощью логов:
| # touch /var/log/pureftpd.log && chmod 777 /var/log/pureftpd.log | 
Интегрируем поддержку мускула, редактируя edit /usr/local/etc/pureftpd-mysql.conf до следующего состояния:
| MYSQLServer 127.0.0.1  | 
И опять коменты:
| # Айпи, на котором слушается сокет. Не задавать этот пункт, если используется локальный unix сокет. MYSQLServer 127.0.0.1 # Порт, на котором висит MySQL. Не задавать этот пункт, если используется локальный unix сокет. # MYSQLPort 3306 # Задается имя сокета, если мускул на етом же хосте. MYSQLSocket /tmp/mysql.sock # Юзер БД MYSQLUser pureftpd # Пароль юзера MYSQLPassword PASSWORD # Собственно сама БД. MYSQLDatabase ftp # Как сохраняются пароли юзеров в БД # Значения : "cleartext", "crypt", "md5" and "password" # ("password" = MySQL password() function) # Пожно использовать "any" чтобі попробовать "crypt", "md5" *and* "password" MYSQLCrypt md5 # В последующих директивах части строк заменены до выполнения запроса. # \L заменяэтся именем пользователя, который логинится. # \I заменяется айпишником сервера, к которому конектится юзер. # \P номер порта. # \R айпи юзера. # \D айпи юзера в виде long decimal number (например, 192.168.254.1=3232300545). # Запрос на пароль MYSQLGetPW SELECT Password FROM users WHERE User="\L" AND Status="1" AND / -> (Ipaddress = "*" OR Ipaddress LIKE "\R") | 
И, наконец, проверяем работоспособность:
|  # ftp localhost  | 
Удачной работы!
Re: Pure-ftpd - настройка фтп-сервера pure-ftpd с хранением ...
Подскажите, как разрешить слушать 2 интерфейса из 4, методами самого pure-ftp, без использования ipfw/pf.