Centos установка PureFTPd с виртуальными пользователями в MySQL
Для начала подключаем EPEL репозиторий
После ставим необходимый софт:
# yum install -y mysql mysql-server pure-ftpd
Добавляем сервисы в автозагрузку:
# chkconfig --levels 235 mysqld on # /etc/init.d/mysqld start # chkconfig --levels 235 pure-ftpd on
настраиваем мускул
# mysql_secure_installation
Добавляем группу и пользователя ftp:
# groupadd -g 2001 ftpgroup # useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
Создаем базу данных под фтп:
# mysql -u root -p
создаем базу и пользователя с правами на нее:
CREATE DATABASE pureftpd; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'hardpass'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'hardpass'; FLUSH PRIVILEGES;
hardpass не забываем изменить на свой)
Создадим таблицу в бд
USE pureftpd; CREATE TABLE ftpd ( User varchar(16) NOT NULL default '', status enum('0','1') NOT NULL default '0', Password varchar(64) NOT NULL default '', Uid varchar(11) NOT NULL default '-1', Gid varchar(11) NOT NULL default '-1', Dir varchar(128) NOT NULL default '', ULBandwidth smallint(5) NOT NULL default '0', DLBandwidth smallint(5) NOT NULL default '0', comment tinytext NOT NULL, ipaccess varchar(15) NOT NULL default '*', QuotaSize smallint(5) NOT NULL default '0', QuotaFiles int(11) NOT NULL default 0, PRIMARY KEY (User), UNIQUE KEY User (User) ) ENGINE=MyISAM;
Настраиваем pure-ftpd, открываем файл настроек:
# nano /etc/pure-ftpd/pure-ftpd.conf
находим и меняем следующие параметры, на те что указаны ниже:
ChrootEveryone yes MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf CreateHomeDir yes
Настраиваем подключение к базе
# nano /etc/pure-ftpd/pureftpd-mysql.conf
Например так:
MYSQLSocket /var/lib/mysql/mysql.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword hardpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext MYSQLCrypt md5 MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
Запускаем на фтп сервер:
# /etc/init.d/pure-ftpd start
Создадим тестового пользователя:
# mysql -u root -p
как-то так:
USE pureftpd; INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('testuser', '1', MD5('secret'), '2001', '2001', '/home/testuser', '100', '100', '', '*', '500', '0');
только что мы создали пользователя testuser с квотой в 500 Мб, и скоростью загрузки отдачи 100Кбит/с.
На этом все, пробуем подключиться к фтп с только что созданным пользователем.
Возможно, необходимо будет настроить iptables
Поделись с друзьями:
Опубликовано 21.05.2012 в 14:21 · Автор komivlad · Ссылка
Рубрики: CentOS · Теги: centos, mysql, PureFTPd, фтп
Рубрики: CentOS · Теги: centos, mysql, PureFTPd, фтп
01.07.2013 в 17:25
· Ссылка
Ага, спс, поправил очепятки
30.06.2013 в 17:35
· Ссылка
«\L»AND нужно писать отдельно