Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> главная —> Архив —> pureftpd

Чистый FTP сервер - pure-ftpd :)

Автор: lissyara.


    Нашёл аглицкий мануал по pure-ftpd - пробежался по диагонали - оказалось интересно. Поддерживает юзеров в MySQL, персональные лимиты для каждого пользователя, которые тоже можно в БД хранить. Красота, короче. Решил попробовать.
   Ставим из портов, предварительно обновив их:
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='pure-ftpd'
Port:   pure-ftpd-1.0.21_1
Path:   /usr/ports/ftp/pure-ftpd
Info:   A small, easy to set up, fast and very secure FTP server
Maint:  j@pureftpd.org
B-deps:
R-deps: perl-5.8.8
WWW:    http://www.pureftpd.org/

/usr/ports/>cd /usr/ports/ftp/pure-ftpd
/usr/ports/ftp/pure-ftpd/>make && make install && make clean

Вообще, подразумеваеся что MySQL уже стоит - без него я не пробовал, но в зависимостях его нет. Поэтому клиента лучше сразу поставить. Лезет синее окошко, где я выбрал такой набор опций:
          Options for pure-ftpd 1.0.21_1

[ ] 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
[X] PRIVSEP        Enable privilege separation
[X] PERUSERLIMITS  Per-user concurrency limits
[X] THROTTLING     Bandwidth throttling
[X] BANNER         Show pure-ftpd welcome upon session start
[X] UPLOADSCRIPT   Support uploadscript daemon
[X] UTF8           Support for charset conversion (expreimental)
[X] SENDFILE       Support for the sendfile syscall

После чего выскочило ещё пару опций, не отражённых в этом самом окошке:
===>  Vulnerability check disabled, database not found
===>  Found saved configuration for pure-ftpd-1.0.21_1
You can use the following additional options:
WITH_CERTFILE=/path   - Set different location of certificate file for TLS
WITH_LANG=lang        - Enable compilation of language support, lang is one of
  english, german, romanian, french, french-funny, polish, spanish,
  dutch, italian, brazilian-portuguese, danish, slovak, korean,
  norwegian, swedish, russian, traditional-chinese, simplified-chinese,
  hungarian, catalan and czech.

Естессно, русский нам нужен :))) Потому жмякнул Ctrl+C, и внёс такие строки в /etc/make.conf
PORTSDIR?=      /usr/ports
# pure-ftpd
.if ${.CURDIR} == ${PORTSDIR}/ftp/pure-ftpd
WITH_LANG=              russian
.endif

После установки, копируем дефолтовые настройки:
/usr/home/lissyara/>cd /usr/local/etc/
/usr/local/etc/>ls | grep pure
pure-ftpd.conf.sample
pureftpd-ldap.conf.sample
pureftpd-mysql.conf.sample
pureftpd-pgsql.conf.sample
/usr/local/etc/>
/usr/local/etc/>cp pureftpd-mysql.conf.sample pureftpd-mysql.conf
/usr/local/etc/>cp pure-ftpd.conf.sample pure-ftpd.conf
/usr/local/etc/>

И редактируем конфиги:
/usr/local/etc/pure-ftpd.conf
# Конфиг pure-ftpd
# 2006-06-13, lissyara

# Для запуска Pure-FTPd с этой конфигурацией, вместо параметров   
# командной строки, запустите такую команду:
# /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
#
# Не забудте изучить документацию на сайте, для получения
# полного списка команд - http://www.pureftpd.org/documentation.shtml

# Chroot`ить всех пользователей в их хомяках
ChrootEveryone              yes

# Если в предыдущей опции было выбрано "no", то члены следующей
# группы не будут chroot`ится. Всё остальные - будутe. Если Вы не хотите
# chroot`ить всех, то просто раскоментируйте ChrootEveryone и TrustedGID.
# TrustedGID                    100

# Включить "фичи" совместимости, для кривых клиентов
BrokenClientsCompatibility  no

# Максимальное число одновременных юзеров
MaxClientsNumber            50

# Работать в фоне (демоном)
Daemonize                   yes

# Максимальное число одновременных соединений с одного IP
MaxClientsPerIP             8

# Если вы хотите логировать все команды клиентов, то в этом
# пункте должно быть "yes". Если необходимо логгировать также
# ответы сервера, то просто продублируйте этот пункт.
VerboseLog                  no

# Показывать или нет файлы, начинающиеся с точки, даже когда клиент
# явно не говорит что это надо делать, опцией "-a".
DisplayDotFiles             yes

# Не разрешать аутентифицированных юзеров - этот FTP
# только для анонимных клиентов.
AnonymousOnly               no

# Запретить анонимоусов - FTP тока для регистрованных юзеров.
NoAnonymous                 no

# Средства syslog (auth, authpriv, daemon, ftp, security, user, local*)
# Дефолт - "ftp". "none" - отключает логирование.
SyslogFacility              ftp

# Показывать какие-то куки? (Display fortune cookies)
# FortunesFile              /usr/share/fortune/zippy

# Не резольвить имена хостов в логах. Логи становятся менее информативными, 
# но и ресурсов требуется меньше. "yes" - имеет смысл ставить на очень
# загруженных серверах, или при неработающем DNS.
DontResolve                 yes

# Максимальное время простоя (по окончании рвётся коннект), в минутах
# (default = 15 minutes)
MaxIdleTime                 15

# Файл конфигурации 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,
# PAMAuthentication и UnixAuthentication могут использоваться только
# один раз, но они могут использоваться вместе. Например, если вы
# используете MySQLConfigFile, затем UnixAuthentication, то идёт запрос
# к MySQL. Если в БД такой пользователь не найден, то пробуется 
# системный пользователь в /etc/passwd и /etc/shadow. Если SQL
# аутентификация неудачна по причине неправильного пароля, то происходит
# остановка дальнейшего поиска пользователя. Методы аутентификации
# будут ипользоваться в порядке в которм они заданы

# Пределы рекурсии команды 'ls'. Первй аргумент - максимально число файлов,
# которое будет показано. Второе - максимальное число подкаталогов
LimitRecursion              2000 8

# Имеют ли право анонимоусы создвать новые директории?
AnonymousCanCreateDirs      no

# Если система загружена более, чем указанное тут значение, то
# анонимоусы не могут что-либо скачивать
MaxLoad                     4

# Диапазон портов для пассивного соединения. Если у вас файрволл рубает 
# стандартный диапазон
# PassivePortRange          30000 50000

# Принудительный IP адрес в PASV/EPSV/SPSV ответах. - для NAT.
# Символические имена хостов такде приняты для шлюзов с динамическим IP
# 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
# Используйте AnonymousBandwidth или UserBandwidth, использовать оба,
# не имеет смысла.
# UserBandwidth             8

# Маска для создаваемых файлов. <umask для файлов>:<umask для директорий>.
# 177:077 - если вы параноик :)
# umask - это такое число, при вычитании которого из максимума (777) и
# получается нужная маска. т.е. для случая ниже маски будут, соответствено:
# 644 для файлов, и 755 для директорий
Umask                       133:022

# Минимальный UID с которым юзер будет пущен.
# (В родном варианте тут было 100. Я поставил тыщщу)
MinUID                      1000

# Разрешить передачу FXP для авторизованных юзеров.
# (Это передача файлов прям между серверами - т.е. если вам надо
# скопировать файл с одного сервака на другой, вы его вначале тащите
# к себе, затем кладёте куда надо. При включении этой опции сервера
# сами перекинут файл между собой. Но это палево - я серверов с
# включенной этой функцией ещё не видел :)))
AllowUserFXP                no

# Разрешить передачу FXP для анонимоусов и не-анонимоусов
# (видимо, для всех вообще).
AllowAnonymousFXP           no

# Пользователи не могут удалять и изменять файлы начинающиеся на точку('.')
# даже если они их владельцы. Если TrustedGID включена, эта группа имеет
# доступ к этим файлам.
ProhibitDotFilesWrite       no

# Запретить чтение файлов начинающихся с точки (.history, .ssh...)
ProhibitDotFilesRead        no

# Никогда не перезаписывать файлы. Когда имя, для закачиваемго файла уже
# существует, он будет автоматически переименован в file.1, file.2, file.3, ...
AutoRename                  no

# Запретить анонимным юзерам загружать новые файлы (no = аплоад разрешён)
AnonymousCantUpload         no

# Только подключения к этому IP адресу могут быть не анонимными. Вы
# можете использовать эту директиву чтобы использовать несколько IP
# для анонимного FTP, и оставить приватный, зафаерволленый IP для
# удалённого администрирования. также вы можете разрешить нероутабельный
# локальный IP (типа 10.x.x.x) для аутентификации и оставить публичный
# (для анонимоусов) FTP-сервер на другом IP.
#TrustedIP                  10.1.1.1

# Если вы хотите чтобы PID добавлялся в каждую линию лога,
# то раскомемнтируйте следующую линию.
#LogPID                     yes

# Создавать дополнительный лог-файл с логом в формате типа "apache":
# fw.c9x.org - jedi [13/Dec/1975:19:36:39] "GET /icap.tar.bz2" 200 21808
# Этот лог-файл может быть обработан программами для
# анализа логов апача.
# 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

# Включить виртуальную квоту. Первое число - максимальное число файлов.
# Второе число - максимальный размер, в мегабайтах.
# Так 1000:10 ограничивает каждого пользователя 1000 файлов и 10-ю мегами.
#Quota                       1000:10

# Если pure-ftpd скомпилен с поддержкой standalone режима, вы можете изменить
# местоположение pid-файла. Дефолтовое положение - /var/run/pure-ftpd.pid
#PIDFile                     /var/run/pure-ftpd.pid

# Если pure-ftpd скомпилен с поддержкой pure-uploadscript,
# то этот пункт позволяет писать информацию о новых загруженных
# файлах в /var/run/pure-ftpd.upload.pipe так что pure-uploadscript может
# прочесть их и обработать загруженный файл.
#CallUploadScript yes

# Эта опция полезна на серверах, гда позволен аплоад анонимоусам. 
# Если /var/ftp находится в отдельном разделе /var, это позволяет
# сохранить свободное место и защитить файлы логов. Когда процент
# заполнения больше чем указанный тут, аплоад автоматом запрещается.
MaxDiskUsage               99

# Установите 'yes' в этой опции если хотите разрешить юзерам
# переименовывать файлы.
#NoRename                  yes

# Включить 'customer proof': какая-то ошибка, типа 'chmod 0 public_html',
# при совместной работе, чтоль... Короче это не баг а фича... :) И чтобы
# тупые клиенты не напрягали ваш саппорт надо поставить 'yes' в этом
# пункте. Если клиенты имеют немного знаний по Unix то эта фича
# бесполезна. Если у Вас хостинг - включите её.
# (перевод почти дословный - но про что речь я так и не понял...)
CustomerProof              yes

# Число параллельных процессов. Работает тока если сервер был
# скомпилен с опцией '--with-peruserlimits' (тут чё-то про то, что
# в большинстве бинарных дистрибов так оно и есть).
# Формат:<максимум сессий на юзера>:<максимум сеансов анонимоусов>
# Например, 3:20 значит что аутентифичированный юзер может иметь три
# активных сеанса. А на всех анонимов - максимум 20 сеансов.
#PerUserLimits            3:20

# Когда загружен файл на сервер, и есть предыдущая версия (с тем же именем),
# то старый файл не будет ни удалён ни усечён. Загрузка будет произведена
# во временный файл и по окончании загрузки будет произведено атомарное
# переключение к новой версии файла. Например, при загрузке большого PHP
# сценария, апач будет работать со старой версией до полной загрузки
# и немедленно переключится на новый как тока он будет полностью передан
# Эта опция несовместима с виртуальными квотами.
#NoTruncate               yes

# Эта опция может принимать три значения:
# 0 - отключить SSL/TLS шифрование (по-умолчанию).
# 1 - принимать и шифрованные и обычные подключения.
# 2 - отклонять подключения которые не используют SSL/TLS,
#     включая анонимные соединения.
# Не раскомментируйте это вслепую. Проверьте, что:
# 1) Сервер скомпилен с поддержкой SSL/TLS (--with-tls),
# 2) Положен валидный сертификат,
# 3) Только совместимые клиенты залогинятся.
# TLS                      1

# Слушается тока IPv4 адрес в режиме standalone (т.е. IPv6 отключен)
# По дефолту, IPv4 и IPv6 включены.
IPV4Only                 yes

# Слушается тока IPv6 адрес в режиме standalone (т.е. IPv4 отключен)
# По дефолту, IPv4 и IPv6 включены.
# IPV6Only                 yes

# Поддержка UTF-8 для имён файлов (RFC 2640)
# Определите кодировку для файловой системы сервера и, опционально,
# дефолтовую кодировку для клиентов, которые не юзают UTF-8.
# Работает тока если pure-ftpd скомпилен с '--with-rfc2640'
FileSystemCharset koi8-r
ClientCharset cp1251

/usr/local/etc/pureftpd-mysql.conf
# Конфиг MySQL для pureftpd

# Опционально: Имя или IP MySQL-сервера. Не задавать этот
# пункт, если используется локальный unix сокет.
#MYSQLServer     127.0.0.1

# Опционально: Порт на котором висит MySQL. Не задавать этот
# пункт, если используется локальный unix сокет.
#MYSQLPort       3306

# Опционально: Задаётся имя сокета mysql.sock если MySQL на этом же хосте.
MYSQLSocket     /tmp/mysql.sock

# Обязательно: юзер, которым лезем в БД.
MYSQLUser       pure-ftpd

# Обязательно: пароль пользователя, от которого лезем в MySQL.
MYSQLPassword   pure-ftpd

# Обязательно: БД с которой работаем.
MYSQLDatabase   pureftpd

# Обязательно: как сохранён пароль в БД
# Возможные значения: "cleartext", "crypt", "md5" и "password"
# ("password" = MySQL password() функции)
# Можно использовать "any" чтобы попробовать "crypt", "md5" и "password"
MYSQLCrypt      cleartext

# В последующих директивах части строк заменены, до
# выполнения запроса:
#
# \L заменяется именем пользователя, что логинится.
# \I заменяется IP адресом сервера, на который лезет юзер
# \P заменяется номером порта с которым соединился юзер.
# \R заменяется IP адресом юзера.
# \D заменяется IP адресом юзера, в виде long decimal number
# (например, 192.168.254.1 == 3232300545).
#
# Можно настругать относительно сложные квери к БД, используя
# этот набор переменных. Если используется одна БД на несколько серверов,
# то "\I" позволяет определить, на тот ли сервер ломится юзер.

# Кверя на получение пароля из БД:
MYSQLGetPW      SELECT `password` FROM `users` WHERE `user`="\L" AND `active`='1'

# Кверя на получение системного имени пользователя, или UID
MYSQLGetUID     SELECT `uid` FROM `users` WHERE `user`="\L"

# Опционально: default UID - вместо квери на его извлечение MYSQLGetUID
#MYSQLDefaultUID 1000

# Запрос к БД на получение имени группы или gid
MYSQLGetGID     SELECT `gid` FROM `users` WHERE `user`="\L"

# Опционально: default GID - вместо запроса MYSQLGetGID
#MYSQLDefaultGID 1000

# Запрос на получения хомяка
MYSQLGetDir     SELECT `home` FROM `users` WHERE `user`="\L"

# Опционально: Запрос на максимальное число файлов у юзера
# (интересно - какой в этом глубокий смысл? Чтобы inode на
# сервере не первели чтоль? :))
#Должен быть скомпилен с `virtual quotas support`.
MySQLGetQTAFS  SELECT `QuotaFiles` FROM `users` WHERE `user`="\L"

# Опционально: запрос на квоту (использование диска)
# Число, в мегабайтах.
# Pure-FTPd должен быть скомпилен с `virtual quotas support`.
MySQLGetQTASZ  SELECT `QuotaSize` FROM `users` WHERE `user`="\L"

# Опционально: Отношения. Запросы на соотношение download/upload.
# Дол;ен быть скомпилен с этой функцией.
MySQLGetRatioUL SELECT `ULRatio` FROM `users` WHERE `user`="\L"
MySQLGetRatioDL SELECT `DLRatio` FROM `users` WHERE `user`="\L"

# Опционально: Ширина канала для юзера. Сервер должен быть
# скомпилен с такой опцией. Значение в KB/s .
MySQLGetBandwidthUL SELECT `ULBandwidth` FROM `users` WHERE `user`="\L"
MySQLGetBandwidthDL SELECT `DLBandwidth` FROM users WHERE `user`="\L"

# Выпускать юзера из хомяка (~). Никогда не делайте этого, если:
# 1) Вы точно знаете что делаете.
# 2) Совпадают реальные и виртуальные юзеры.
#MySQLForceTildeExpansion 1


# Если Вы обновили таблицы до транзакционных (Gemini,
# BerkeleyDB, Innobase...), можно включить транзакции SQL
# Оставьте закомменченым, если используются MyISAM базы данных,
# или старая версия MySQL (< 3.23.x).
#MySQLTransactions On

Затем создаём БД по прилагаемому дампу:
-- 
-- БД: `pureftpd`
-- 

-- --------------------------------------------------------

-- 
-- Структура таблицы `users`
-- 

CREATE TABLE `users` (
  `user` varchar(16) binary NOT NULL,
  `password` varchar(64) binary NOT NULL,
  `uid` int(11) NOT NULL default '-1',
  `gid` int(11) NOT NULL default '-1',
  `home` varchar(128) binary NOT NULL default '/usr/home/anonymous',
  `QuotaFiles` int(9) NOT NULL default '10000',
  `QuotaSize` int(6) NOT NULL default '100',
  `ULRatio` int(2) NOT NULL default '1',
  `DLRatio` int(2) NOT NULL default '10',
  `ULBandwidth` int(6) NOT NULL default '1024',
  `DLBandwidth` int(6) NOT NULL default '1024',
  `active` int(1) NOT NULL default '1',
  PRIMARY KEY  (`user`)
) TYPE=MyISAM;

-- 
-- Дамп данных таблицы `users`
-- 

INSERT INTO `users` VALUES ('lissyara', '123', 1001, 1001,
'/usr/home/lissyara', 10000, 100, 1, 10, 1024, 1024, 1);
INSERT INTO `users` VALUES ('anonymous', '123', 1002, 1002,
'/usr/home/anonymous', 10000, 100, 1, 10, 1024, 1024, 1);

Затем запускаем сервер:
/usr/home/lissyara/>echo 'pureftpd_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/pure-ftpd start
Starting pureftpd.
Running: /usr/local/sbin/pure-ftpd -A -c50 -B -C8 -D -fftp -H -I15 
-lmysql:/usr/local/etc/pureftpd-mysql.conf -L2000:8 -m4 -s -U133:022
-u1000 -k99 -Z -4 -8koi8-r -9cp1251
/usr/home/lissyara/>
/usr/home/lissyara/>sockstat | grep pure
root     pure-ftpd  13064 3  dgram  -> /var/run/logpriv
root     pure-ftpd  13064 4  tcp4   *:21                  *:*
/usr/home/lissyara/>

Пробуем подключиться:
/usr/home/lissyara/>ftp localhost
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.int.otradno.ru.
220---------- Добро пожаловать на Pure-FTPd [privsep] [TLS] ----------
220-Вы пользователь 1 из 50 разрешенных
220-Местное время 09:12. Серверный порт: 21.
220 Вы будете отсоединены после 15 минут бездеятельности.
Name (localhost:lissyara):
331 Чтобы войти как lissyara требуется пароль
Password:
230-Пропускная способность для вас ограничена
230-Пользователю lissyara разрешен групповой доступ к:  wheel    1001
230-Вы должны соблюдать соотношение 1:10 (UL/DL)
230-OK. Текущая корневая директория /
230-1 файлов используется (0%) - разрешено: 10000 файлов
230 0 КБ используется (0%) - разрешено: 102400 КБ
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
Remote directory: /
ftp> quit
221-Всего хорошего. Вы закачали 0 и скачали 0 килобайт.
221 Отсоединение.
/usr/home/lissyara/>

И в /var/log/xferlog такие строки:
Jun 14 09:12:50 lissyara pure-ftpd: (?@127.0.0.1) [INFO] Новое соединение с 127.0.0.1
Jun 14 09:12:58 lissyara pure-ftpd: (?@127.0.0.1) [INFO] lissyara вошел
Jun 14 09:13:09 lissyara pure-ftpd: (lissyara@127.0.0.1) [INFO] Отсоединение.

Ну и всё. Работает. Особенно мне понравилась возможность перекодировки - сейчас на моём ftp для локалки всё хранится в кодировке cp1251 - соответсвенно при просмотре из консоли - это тихий ужас, ибо локаль на фре koi8-r. Теперь можно будет всё хранить в нормальном формате (правда придётся настругать скрипт для переименовывания всего - 200 гигов с именами в cp1251 :)).
Из минусов - нет возможности, как в proftpd на запись в MySQL логов - кто что передал-принял, какие были команды и с каким результатом... Очень удобная феня... Также при ошибках в конфиге не ругается на то, в какой строке ошибка - я оставил незакомменченым одно предложение из комментов, по-русски - не запускался, и в логах так ругался:
Jun 13 20:22:41 lissyara pure-ftpd: (?@?) [ERROR] Ошибка в конфигурации: Плохой файл конфигурации SQL: /usr/local/etc/pureftpd-mysql.conf
Jun 13 20:25:45 lissyara pure-ftpd: (?@?) [ERROR] Ошибка в конфигурации: Плохой файл конфигурации SQL: /usr/local/etc/pureftpd-mysql.conf

Хорошо хоть конфиги не большие, и удалось быстро найти...



размещено: 2006-06-14,
последнее обновление: 2008-12-13,
автор: lissyara


jails, 2006-06-15 в 1:21:20

В портах имеется веб-морда для pure-ftpd
/usr/ports/www/usermanager. На сайте автора веб-морды, имеется русик и подробное описание установки.
http://machiel.generaal.net/index.php?subject=user_manager_pureftpd

Urgor, 2006-07-24 в 14:16:43

Перед подключением не помешает сделать:
mkdir /usr/home/lissyara
chown 1001:1001 /usr/home/lissyara
иначе не дает ничего закачивать
И в '/usr/local/etc/rc.d/pure-ftpd start' .sh забыл на конце скрипта.

бонх, 2006-07-26 в 12:02:48

-"Затем создаём БД по прилагаемому дампу:"
С этого момента можно по подробнее?.. Как именно?

Kolesya, 2006-09-19 в 15:21:25

Все супер, есть предложение немного поменять параметры установки
[ ] BANNER         Show pure-ftpd welcome upon session start

Зачем показывать какую версию софта мы используем ? :-)

Денисон, 2006-10-23 в 4:58:30

# Установите 'yes' в этой опции если хотите разрешить юзерам
# переименовывать файлы.
#NoRename                  yes

Ну вообще-то наоборот =).
должно быть так
#Установите 'Yes' в этой опции если НЕ хотите разрешить #юзерам переименовывать файлы.

Денисон, 2006-10-23 в 5:04:33

# Включить 'customer proof': какая-то ошибка, типа 'chmod 0 public_html',
# при совместной работе, чтоль... Короче это не баг а фича... :) И чтобы
# тупые клиенты не напрягали ваш саппорт надо поставить 'yes' в этом
# пункте. Если клиенты имеют немного знаний по Unix то эта фича
# бесполезна. Если у Вас хостинг - включите её.
# (перевод почти дословный - но про что речь я так и не понял...)


Вообщем написано что это что-то типа "защиты" от глупых ошибок пользователей типа 'chmod 0 public_html', которые в принципе реальные, но они могут полностью блокировать файлы пользователей, и потом буквально "иметь" вашу техническую поддержку глупыми притензиями. Если клиенты имеют немного знаний по Unix то эта фича бесполезна. Если у Вас хостинг - включите её. (перевод почти дословный - но про что речь я так и не понял...)

Я так) подправляю по мере прочтения =)

Slava524, 2007-02-01 в 9:04:39

А вот можно в pure-ftpd сделать разделение прав по ip клиента? Например, у меня есть сервак, где анонимусы, пришедшие из внутренней сети (192.168.1.0/24) могут и писать, и удалять, и создавать директории, а анонимусы извне могут только читать. В proftpd такое на ура делается.

Anonymous, 2007-04-04 в 0:40:56

> Теперь можно будет всё хранить в нормальном формате (правда придётся настругать скрипт для переименовывания всего - 200 гигов с именами в cp1251 :)).

apt-get install convmv && man convmv

yoda, 2007-07-22 в 20:34:08

Согласен с Urgor относительно прав без них не будет закачиваться.
В догонку чтобы пассы шифровались лучше использовать так:
INSERT INTO `users` VALUES ('anonymous', 'MD5('123'), 1002, 1002, '/usr/home/anonymous', 10000, 100, 1, 10, 1024, 1024, 1);

www2, 2007-11-18 в 13:01:07

Товарисч Anonymous правильно сказал насчёт convmv, только не учёл он, что здесь обсуждается не его любимый Debian, а FreeBSD.

Колесо (то есть скрипт) для перекодировки имён файлов изобретать не надо, оно уже есть и называется iconvmv.

Павел, 2007-12-20 в 20:04:05

>Естессно, русский нам нужен :))) Потому жмякнул Ctrl+C, и внёс такие строки в /etc/make.conf

смысл тащиться писать скрипт в make.conf, не проще ли просто заюзать #make WITH_LANG=russian
??

lissyara, 2007-12-20 в 20:26:54

А теперь расскажи, как при обновлении, ты достаёшь замызганную бамажку, разбираешь то что на ней написано, и вбиваешь все опции...
А если забыл, то получаешь неработоспособное приложение, или лишённое необходимого функционала.

Saalan, 2007-12-27 в 21:37:01

1. Похоже pure-ftpd авторизует anonymous-а до обращения в MySQL базу. Я менял его параметры, удалял его - никаких изменений.
Пробовал поставить "NoAnonymous no" - не пускает, через MySql авторизовать не пытается...
Из авторизаций, у мня только MySQLConfigFile раскоментарен.
Что-то не догадался попробовать его из passwd грохнуть...

2. Поясните плеез назначение значений UID и GID.
Права на запись/чтение раздаются на уровне системы?    

niceman, 2008-01-20 в 18:49:47

при заливке от anonymous каталогам/файлам назначаются права 755:644, таким образом, другие пользователи(сортировщики поступающих материалов) не могут удалять файлы в новых каталогах, созданных этим пользователем. Никак не могу решить эту проблему, поэтому тупо кроном раз в минуту делаю chmod директорий до 775. В исходниках замена всех 755 на 775 ничего не дает.

lissyara, 2008-01-20 в 20:18:08

Это нормальное поведение для анонимного фтп.
А вам я рекомендую научиться читать - для вопросов есть форум.

Igorka(:, 2008-03-19 в 17:45:43

При создании таблицы поля user, password, uid, gid должны быть написаны с большой буквы или же в mysql конфиге нужно исправлять строчки с точностю наоборот. А поле таблицы "home" нужно изменить на "Dir".
Ето у меня такие неточности при установке с портов возникли на FreeBsd 7.0

Павел, 2008-03-19 в 17:54:57

>А теперь расскажи, как при обновлении, ты достаёшь >замызганную бамажку, разбираешь то что на ней написано, и >вбиваешь все опции...
>А если забыл, то получаешь неработоспособное приложение, >или лишённое необходимого функционала.
Не буду утверждать конечно, но на собственном опыте делал... ставлю из портов приложение с указанем опций, все указанные опции сохраняются где-то там в configure, доставать замызганную бумажку ещё не приходилось :-)

lissyara, 2008-03-19 в 18:31:03

>смысл тащиться писать скрипт в make.conf, не проще ли просто заюзать #make WITH_LANG=russian
уже и это сохраняется?
ща уточню... помоему - нет.

Stalker (AKA Zver), 2008-04-04 в 14:44:25

>А теперь расскажи, как при обновлении, ты достаёшь >замызганную бамажку, разбираешь то что на ней написано, и >вбиваешь все опции...
>А если забыл, то получаешь неработоспособное приложение, >или лишённое необходимого функционала.

Как я понл, проблема в том что ты редактировал конфиг, и это не помогло. Дело в том что pure-ftpd напрямую НЕ ЗАБИРАЕТ опции из конфигурационного файла. Об этом написано в документации на PureFTP. Но! там в составе идет перловый скрипт, который запускается предварительно при старте скрипта /usr/local/etc/rc.d/pureftpd, парсит конфиг и формирует строку опция доля PureFTP.
Предположу что у вас НЕ УТСАНОВЛЕН perl.

Artem, 2008-05-04 в 22:51:17

Как зелать чтобы был анонимный доступ, чтото никак не получаеться(

seacon, 2008-06-02 в 20:17:57

По дефолту в целях безопасности, pure-ftpd не дает анонимусам права на докачку файла в случае обрыва, переименование файлов и удаление файлов. Чтобы решить проблему, необходимо пересобрать его из исходников. Для этого распаковываем исходники
даем команду ./configure
добавляем в файл config.h след строки:
#define ANON_CAN_DELETE 1
#define ANON_CAN_RESUME 1
#define ANON_CAN_RENAME 1
далее собираем make && make install

Dushes, 2008-11-19 в 2:30:06

nf;t проблема что то анонима ни в какую не пускает :(

Dushes, 2008-11-19 в 2:44:59

Разобрался

If you want to accept anonymous users on your FTP server, you don't need to have any 'ftp' user in the MySQL directory. But you need to have a system 'ftp' account on the FTP server.

Grishin_U_S, 2009-01-04 в 11:44:06

Долго не мог понять почему не пускает системного пользователья, у которого в качестве шелла установлен /usr/sbin/nologin .
Помогло в /etc/shells написать /usr/sbin/nologin , источник

http://www.opennet.ru/openforum/vsluhforumID1/65444.html

Classified, 2009-06-24 в 15:58:00

У меня pureftpd v1.0.22 + MySQL 5.1
Для старта вручную, запускается так:
/usr/local/sbin/pure-ftpd -l mysql:[путь где лежит pureftpd-mysql.con] &

Для автозапуска не знаю:
echo 'pureftpd_enable="YES"' >> /etc/rc.conf НЕ работает

alekciy, 2010-01-02 в 17:59:52

Не стоит забывать об ошибке в файле конфига в директиве PassivePortRange (Маленькая ошибка в конфигурационном файле Pure-FTPd, из-за которой я потерял час).

Павел, 2010-01-03 в 15:32:46

Да нет никакой ошибки, всё работает. Что написано в статье непонятно, может версия старая.

alekciy, 2010-01-02 в 17:59:52

Не стоит забывать об ошибке в файле конфига в директиве PassivePortRange (Маленькая ошибка в конфигурационном файле Pure-FTPd, из-за которой я потерял час).

nezabor, 2010-03-20 в 18:11:53

testFr# /usr/local/etc/rc.d/pure-ftpd start
Starting pureftpd.
Running: /usr/local/sbin/pure-ftpd -A -c50 -B -C8 -D -fftp -H -I15 -lmysql:/usr/local/etc/pureftpd-mysql.conf -L2000:8 -m4 -s -U133:022 -u1000 -k50 -Z -4 -8koi8-r -9cp1251
421 Неизвестный метод авторизации: mysql:/usr/local/etc/pureftpd-mysql.conf
/usr/local/etc/rc.d/pure-ftpd: WARNING: failed to start pureftpd

Exit, 2010-05-16 в 10:54:55

Не могу разобраться. В строке с кол-ом пользователей:
MaxClientsNumber        5
При старте Pure-ftpd:
/pure-ftpd.pid -A -с5 -B -C8 -E
а при подключении пользователей
Вы пользователь 1 из 1 разрешенных

Подскажите, я запутался (



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0531 секунд
Из них PHP: 51%; SQL: 49%; Число SQL-запросов: 54 шт.
Исходный размер: 82109; Сжатая: 19822