Итак, приступаем к установке сервера с поддержкой виртуальних юзеров в мускуле.
Ищем пакет в портах:
# 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.