pure-ftpd,一个很好用的ftp服务端。可以和mysql整合,通过mysql建立和验证帐户,并实现流量限制、磁盘配额限制等功能。这就说明,可以通过自己开发的PHP程序来实现Web管理。其它的功能,大家可以到官网上去看。
我是直接下载的包自己编译安装的。如下
安装mysql-devel
首先,如果你要跟mysql整合的话,先安装mysql-devel,进入这个页面选择跟你安装的mysql版本一样的rpm包,然后用rpm –ivh mysql-devel-*.rpm进行安装。
安装pureftpd
安装好后,就开始安装pureftpd了
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.35.tar.gz
tar zxf pure-ftpd-1.0.35.tar.gz
cd pure-ftpd-1.0.35
./configure --without-capabilities --with-virtualchroot --with-mysql --with-pam --with-altlog --with-cookie --with-throttling --with-ratios --with-paranoidmsg --with-quotas --with-everything
make
make install
输入这些命令后就把pure-ftpd安装好了。当然了,我之前没有装mysql-devel,会出现一些错误:
checking for mysql_init in -lmysqlclient… no
configure: error: libmysqlclient is needed for MySQL support
当时困扰了我不少时间,现在你看到我的这个文章,省时了,亲!给个好评吧!
附上安装的选项:
PureFTPd有很多的编译配置选项,下面就列出部分主要的配置
--prefix =PREFIX 安装路径
--with-sysquotas 使用系统磁盘配额 ( 非虚拟)
--with-altlog 支持选择日志格式( 类似Apache)
--with-puredb 支持虚拟用户 ( FTP登陆用户而非系统用户)
--with-extauth 支持扩展验证模块
--with-pam 启用PAM验证支持 ( 默认=禁用)
--with-cookie 启用Cookie支持 ( -F 选项)
--with-throttling 支持带宽控制 ( 默认=禁用)
--with-ratios 支持 上传/ 下载 速度控制
--with-quotas 支持 .ftpquota 文件(指定磁盘配额使用)
--with-ftpwho 支持pure-ftpwho(查看在线用户的程序)
--with-largefile 支持大于2G的文件
--with-welcomemsg 支持 welcome.msg 向后兼容(已经过时)
--with-uploadscript 上传后允许执行外部脚本 ( 测试阶段)
--with-virtualhosts 在不同的IP地址提供虚拟服务器功能
--with-virtualchroot 允许在chroot 的环境下通过符合连接跳转到外部
--with-diraliases 启用目录别名
--with-nonroot 普通模式或者说是限制模式. 如果你在该服务器上没有root权限那只有启用该项
--with-peruserlimits 支持每个用户的并发限制
--with-language = 语言支持< english | traditional-chinese | simplified-chinese>
--with-ldap 在LDAP目录中提供用户数据库
--with-mysql 在MySQL数据库中存放用户数据
--with-pgsql 在PostgreSQL数据库中存放用户数据
配置
再然后就是对其进行配置了:
cp pureftpd-mysql.conf /etc/
cp configuration-file/pure-config.pl /usr/local/sbin/
chmod 755 /usr/local/sbin/pure-config.pl
cp configuration-file/pure-ftpd.conf /etc/
cp contrib/redhat.init /etc/rc.d/init.d/pureftpd
chmod u+x /etc/rc.d/init.d/pureftpd
chkconfig --add pureftpd
chkconfig --level 2345 pureftpd on
service pureftpd start
输入这些命令后,你会看到:
Starting pure-config.pl: Running: /usr/local/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -fftp -H -I15 -L10000:8 -m4 -s -U133:022 -u100 -k99 -Z
然后编辑/etc/pure-ftpd.conf,确保ChrootEveryone 、MySQLConfigFile 和CreateHomeDir是开启的
ChrootEveryone yes
MySQLConfigFile /etc/pureftpd-mysql.conf
CreateHomeDir yes
然后再编辑 /etc/pureftpd-mysql.conf 如下:
MYSQLSocket /tmp/mysql.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword 这里输入前面给mysql授权时的密码
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")
创建组和用户以及mysql表创建
# groupadd ftpgroup –g 10000
# useradd ftpuser –g ftpgroup –u 10000 –d /dev/null –s /sbin/nologin
然后进入mysql
#/usr/local/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
输入密码后就进入mysql了,然后创建pureftpd数据表及赋予mysql中用户的权限。
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY '对应的密码';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY '对应的密码';
FLUSH PRIVILEGES;
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)
) TYPE=MyISAM;
数据表说明:
User:帐号名;
status:0 表示帐号被禁用,无法登录服务器;
Password:密码,使用MD5加密;
Uid:前面创建的ftpuser帐户号,我们填写的是2001;
Gid:前面创建的ftpgroup组号,我们填写的是2001;
Dir:虚拟用户的个人目录路径,将在/home下创建(第一次登录);
ULBandwidth:上传文件限制速度,KB/s,0为不限制;
DLBandwidth:下载文件限制速度,KB/s,0为不限制;
comment:备注信息;
ipaccess:* 表示任意IP都可以访问此ftp服务器,输入具体IP地址可以只允许此IP连接服务器;
QuotaSize:用户磁盘空间分配,单位:MB,0表示不加限制;
QuotaFiles:用户可以保存的文件数量限制,0表示不加限制。
下面这张图是表结构:
好了,向数据库中添加一个用户,把我们fptd的服务重启一下吧!
#service pureftpd restart
不出意外,我们的ftp服务是可以用了。