一、PureFTPD简介

1.1 PureFTPD简介

  PureFTPd (Pure FTP Server) 是一个快速、稳定的支持全功能的FTP 服务器软件,专门为现在的Linux 核心进行设计。支持 PAM 认证、IPv6、chroot、虚拟域名、内建 ls 命令、FXP 协议、带宽限制、Passive 模式、LDAP 认证 以及 XML 输出等等。

1.2 参考资源

http://www.pureftpd.org/project/pure-ftpd

1.3 注意事项

  通过本文的方法可以设置通过域名、IP地址的方式访问,请根据具体情况更改。以下环境基于64位的CentOS 6.4

二、数据库安装及相关配置

2.1 前期准备

  在使用yum指令前建议先设定好linux软件源(如下图所示,可以参考http://waringid.blog.51cto.com/65148/904201)。需要注意的是epel源中的epel-release-6-7.noarch.rpm已经换成了epel-release-6-8.noarch.rpm版本(同时注意32位和64位版本的区别)。

PureFTPD配置指南_第1张图片

rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install yum-priorities
vi /etc/yum.repos.d/epel.repo

PureFTPD配置指南_第2张图片

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

2.2 安装MySQL

  对于配置MySQL以及phpMyadmin也可以参考“LAMP全新安装 Linux+Apache+MySQL+PHP+phpMyadmin+Zend”的详细配置。

输入以下命令开始安装MySQL及相关的管理工具phpMyAdmin。

yum install mysql mysql-server phpMyAdmin httpd

  安装成功以后需要重新设定phpMyAdmin的配置,先修改/etc/httpd/conf.d/phpMyAdmin.conf文件。将该文件中的内容注释然后新建以下内容。

vim /etc/httpd/conf.d/phpMyAdmin.conf
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1


Order Deny,Allow
Deny from All
Allow from None


Order Deny,Allow
Deny from All
Allow from None


Order Deny,Allow
Deny from All
Allow from None

2.3 配置应用服务

  数据库及WEB应用安装完毕后需将其加入系统自启动选项避免系统重启后服务没有正常启动的情况。

chkconfig –level 235 mysqld on
service mysqld start
chkconfig –level 235 httpd on
service httpd start

  以上指令完成后输入mysql_secure_installation指令重新设定MySQL的权限安全。

PureFTPD配置指南_第3张图片

三、PureFTPd及MySQL支持

  可以直接通过yum命令来完成pureFTPd软件的安装,如果需要特别的定制请参考源码的编译方式。

3.1 安装PureFTPd

yum install pure-ftpd
group –g 2001 ftpgroup
useradd –u 2001 –s /bin/false –d /bin/null –c “pureftpd user” –gftpgroup ftpuser

3.2 创建pureFTPd的数据库

  可以通过phpMyAdmin的WEB界面或是第三方的GUI工具进行数据库的操作,这里以命令的方式进行。

mysql -u root –p

CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
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 NULLdefault '',
Uid varchar(11) NOT NULL default '-1',Gid varchar(11) NOT NULL default'-1',
Dir varchar(128) NOT NULL default '',ULBandwidth smallint(5) NOT NULLdefault '0',
DLBandwidth smallint(5) NOT NULL default '0',comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',QuotaSize smallint(5) NOT NULLdefault '0',
QuotaFiles int(11) NOT NULL default 0,PRIMARY KEY (User),
UNIQUE KEY User (User)) ;
quit;

3.3 配置pureFTPd

  按要求设定FTP的配置文件,在FTP主要的配置中启用MySQL支持的配置文件然后按需求设定FTP的MySQL配置,如下所示。

vim /etc/pure-ftpd/pure-ftpd.conf
ChrootEveryoneyes
MySQLConfigFile/etc/pure-ftpd/pureftpd-mysql.conf
CreateHomeDiryes

PureFTPD配置指南_第4张图片

  其中“ChrootEveryon”的设置是确保虚拟用户的权限限制在指定文件夹中,对于实际的文件夹没有任何权限;“CreateHomeDir”用来确保pureFTPd有权限指定用户的文件夹。

接下来需要编辑/etc/pure-ftpd/pureftpd-mysql.conf文件完成相应配置,如以下所示。

cp /etc/pure-ftpd/pureftpd-mysql.conf/etc/pure-ftpd/pureftpd-mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf
vi /etc/pure-ftpd/pureftpd-mysql.conf

PureFTPD配置指南_第5张图片

MYSQLSocket /var/lib/mysql/mysql.sock
#MYSQLServerlocalhost
#MYSQLPort3306
MYSQLUserpureftpd
MYSQLPasswordftpdpass
MYSQLDatabasepureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERYRECOMMENDABLE uppon cleartext
MYSQLCryptmd5
MYSQLGetPWSELECT Password FROM ftpd WHEREUser="\L" AND status="1" AND (ipaccess = "*" ORipaccess LIKE "\R")
MYSQLGetUIDSELECT Uid FROMftpd WHERE User="\L" AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")
MYSQLGetGIDSELECT Gid FROMftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")
MYSQLGetDirSELECT Dir FROMftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHEREUser="\L"AND status="1" AND (ipaccess = "*" ORipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHEREUser="\L"AND status="1" AND (ipaccess = "*" ORipaccess LIKE "\R")
MySQLGetQTASZSELECT QuotaSizeFROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")
MySQLGetQTAFSSELECT QuotaFilesFROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")

  配置完成后创建启动服务并启动FTP服务。

chkconfig –level 235 pure-ftpd on
service pure-ftpd start

四、增加用户数据并测试

  在开始测试前需要创建测试用户,通过操作数据库的方式来增加用户信息及相关的权限信息。

4.1 增加FTP用户

mysql –u root –p
USE pureftpd;
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`,`ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`)VALUES ('lppz', '1', MD5('secret'), '2001', '2001', '/home/lppz', '100', '100','', '*', '50', '0');
quit;

  该语句的作用是新建一个FTP用户“lppz”。其中目录位于“/home/lppz”下;上传及下载的带宽限制在100KB;可用空间大小限制在50M。

  现在可以通过FTP客户端工具来访问服务器了。需要注意的是只有进行了访问动作后才会在指定文件夹下新建目录。

PureFTPD配置指南_第6张图片

PureFTPD配置指南_第7张图片

4.2 数据库管理

  新增FTP用户的操作也可以通过phpMyAdmin的web界面进行配置,如下图所示:

PureFTPD配置指南_第8张图片

PureFTPD配置指南_第9张图片

五、anonymous用户访问

  如果FTP需要支持anonymous用户访问应要创建名称为ftp的用户和组。pureFTPd在初始化安装时就已经自动建立了该用户无须重复创建。需要注意的是在默认情况下anonymous用户的文件夹位于/var/ftp下,如果要用其它目录需更改配置文件。

5.1 修改配置文件

vim /etc/passwd

PureFTPD配置指南_第10张图片

mv /var/ftp /home
chown ftp:nobody /home/ftp
cd /home/ftp
mkdir incoming
chown ftp:nobody incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/

  incoming设成311用于anonymous用户上传文件用但是无法查看及下载其下的内容。/home/ftp设成555表示可以查看和下载文件。

vim /etc/pure-ftpd/pure-ftpd.conf
NoAnonymousno
AntiWarezno
AnonymousBandwidth8
AnonymousCantUploadno

service pure-ftpd restart

  按上面的指令修改FTP的配置文件后重启FTP服务便可以让pureFTPd支持anonymous用户访问。