Настройка FTP (pure-ftpd + UserManager) на FreeBSD

Обновляем порты

portsnap fetch update

Устанавливаем pure-ftpd на FreeBSD

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

выбираем опции:

[X] MYSQL          Support for users in MySQL database
[X] PRIVSEP        Enable privilege separation
[X] PERUSERLIMITS  Per-user concurrency limits
[X] THROTTLING     Bandwidth throttling
[X] UPLOADSCRIPT   Support uploadscript daemon
[X] UTF8           Support for charset conversion
[X] SENDFILE       Support for the sendfile syscall
[X] BANNER         Show pure-ftpd welcome upon session start

Создаем конфигурационные файлы для pure-ftpd

У pure-ftpd (в нашем случае) конфига: pure-ftpd.conf и pureftpd-mysql.conf:

cd /usr/local/etc/
ls | grep pure
<strong>pure-ftpd.conf.sample
</strong>pureftpd-ldap.conf.sample
<strong>pureftpd-mysql.conf.sample
</strong>pureftpd-pgsql.conf.sample

С первым разберемся сами, а второй оставим UserManager. Копируем дефолтный конфиг:

cp pureftpd-mysql.conf.sample pureftpd-mysql.conf

Редактируем конфиги

Мой вариант конфига pure-ftpd.conf не сильно отличается от дефолтного:

less /usr/local/etc/pure-ftpd.conf

ChrootEveryone              yes
BrokenClientsCompatibility  yes
MaxClientsNumber            50
Daemonize                   yes
MaxClientsPerIP             8
VerboseLog                  no
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 no
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 15
MySQLConfigFile               /usr/local/etc/pureftpd-mysql.conf
LimitRecursion              10000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
AntiWarez                   yes
AnonymousBandwidth            8
Umask                       133:022
MinUID                      100
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AutoRename                  no
AnonymousCantUpload         yes
MaxDiskUsage               90
CustomerProof              yes
IPV4Only                 yes

Для создания конфига pureftpd-mysql.conf нам пригодится UserManager. С его помощью мы сгенерируем конфиг для MySQL и будем управлять нашим FTP сервером через веб.

Устанавливаем UserManager на FreeBSD

Переходим в нужную директорию портов и устанавливаем UserManager:

cd /usr/ports/www/usermanager
make install clean

Нужно перенести скачанный «движок» в директорию веб-сервера:

mv /usr/local/www/data/UserManager/ /var/www/ftp/data

Виртуал хост для апача:

<VirtualHost *:80>
        ServerAdmin     admin@rublin.org
        DocumentRoot    /var/www/ftp/data
        ServerName      ftp.rublin.org
        Alias           /php-fcgi/      /var/www/ftp/cgi-bin/
        CustomLog       /var/log/httpd/httpd-access.log       combined
        ErrorLog        /var/log/httpd/httpd-error.log
</VirtualHost>

Обязательно в php.ini включаем опцию:

short_open_tag  = On

Дополнительно скачиваем русский интерфейс с оффсайта:

fetch http://machiel.generaal.net/files/pureftpd/languages/2.x/russian.php.txt 
mv russian.php.txt /var/www/ftp/data/language/russian.php

Теперь в браузере открываем http://ftp.***/install.php и настраиваем UserManager.

Если на третьем шаге получаем ошибку:

Checking connection to MySQL server  OK! 
Create user FTP OK! 
Create database ftpusers OK! 
Create table admin Failed! 
Create table users Failed!

То придется базу создавать вручную. Для этого подсмотрим в файл script.mysql:

less /var/www/ftp/data/extra/script.mysql

Логинимся в MySQL и выполняем действия со скрипта:

mysql -uroot -p

Создаем пользователя для базы:

CREATE USER 'ftp'@'localhost' IDENTIFIED BY 'tmppasswd';

Создаем базу и назначаем на нее права пользователю:

FLUSH PRIVILEGES;
CREATE DATABASE ftpusers;
GRANT ALL ON ftpusers.* TO 'ftp'@'localhost';

Создаем таблицу администраторов и добавляем админа:

USE ftpusers;
CREATE TABLE admin (
  Username varchar(35) NOT NULL default '',
  Password char(32) binary NOT NULL default '',
  PRIMARY KEY  (Username)
) ENGINE=MyISAM;
INSERT INTO admin VALUES ('Administrator',MD5('tmppasswd'));

Создаем таблицу пользователей и добавляем пользователя:

CREATE TABLE `users` (
  `User` varchar(16) NOT NULL default '',
  `Password` varchar(32) binary NOT NULL default '',
  `Uid` int(11) NOT NULL default '14',
  `Gid` int(11) NOT NULL default '5',
  `Dir` varchar(128) NOT NULL default '',
  `QuotaFiles` int(10) NOT NULL default '500',
  `QuotaSize` int(10) NOT NULL default '30',
  `ULBandwidth` int(10) NOT NULL default '80',
  `DLBandwidth` int(10) NOT NULL default '80',
  `Ipaddress` varchar(15) NOT NULL default '*',
  `Comment` tinytext,
  `Status` enum('0','1') NOT NULL default '1',
  `ULRatio` smallint(5) NOT NULL default '1',
  `DLRatio` smallint(5) NOT NULL default '1',
  PRIMARY KEY  (`User`),
  UNIQUE KEY `User` (`User`)
) ENGINE=MyISAM;
INSERT INTO ftpusers.users VALUES ('ftpuser_1',MD5('tmppasswd'),65534, 31, '/usr', 100, 50, 75, 75, '*', 'Ftp user (for example)', '1', 0, 0);

После этого заканчиваем в веб-интерфейсе инсталяцию.

Запускаем pure-ftpd

Добавляем параметры запуска в rc.conf и запускаем вручную:

echo 'pureftpd_enable="YES"' >> /etc/rc.conf

/usr/local/etc/rc.d/pure-ftpd start
Starting pureftpd.
Running: /usr/local/sbin/pure-ftpd -g/var/run/pure-ftpd.pid -A -b -c50 -B -C8 -D -fftp -H -I15 -lmysql:/usr/local/etc/pureftpd-mysql.conf -L10000:8 -m4 -s -t8 -U133:022 -u100 -i -k90 -Z -4

Проверяем, что сокет запущен:

sockstat | grep pure
root     pure-ftpd  62460 3  dgram  -> /var/run/logpriv
root     pure-ftpd  62460 4  tcp4   *:21                  *:*

Оригинал :rublin.org/content/nastroyka-ftp-pure-ftpd-usermanager-na-freebsd

Запись опубликована в рубрике *Unix,*Linux, FreeBSD. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91