之前介绍过vsftpd的安装,这篇文章就来介绍pureftpd在centos系统如何安装。pureftpd同样是Linux系统非常受欢迎的FTP服务器。
什么是pureftpd
Pure-FTPd 是一款免费(BSD)的,安全的,高质量和符合标准的FTP服务器。 侧重于运行效率和易用性。 它提供了简单的答案,他满足了大众化的需求,包括普通用户以及主机供应商们。
安装pureftpd
1、由于pureftpd不存在于CentOS中yum的官方库中,所以用yum安装pureftpd需要定义非官方的库。
- cd /etc/yum.repos.d/
- wget http://centos.karan.org/kbsingh-CentOS-Extras.repo
现在我们必须激活kbs-CentOS-Testing库。打开kbsingh-CentOS-Extras.repo文件,把enabled=0改成enabled=1。
- vi kbsingh-CentOS-Extras.repo
最终修改如下:
- [...]
- [kbs-CentOS-Testing]
- name=CentOS.Karan.Org-EL$releasever - Testing
- gpgcheck=1
- gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
- enabled=1
- baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch/RPMS/
接着我们导入GPG key到软件库
- rpm --import http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
2、开始安装pureftpd
3、添加ftp用户组(ftpgroup)和用户名(ftpuser),为所有虚拟ftp用户映射。可以自己定义ftp用户组和用户名,还有空闲的用户id2001。
- groupadd -g 2001 ftpgroup
- useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
创建pureftpd mysql数据库
现在我们来创建pureftpd数据库和pureftpd的mysql用户名。
替换ftpdpass成你想要的mysql用户pureftpd的密码。
- 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;
添加ftpd数据库表。
- 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;
断开数据库连接。
至此,pureftpd相关的数据库和数据库表已经建立好了。
配置pureftpd
编辑/etc/pure-ftpd/pure-ftpd.conf文件,确保 ChrootEveryone, MySQLConfigFile, 和 CreateHomeDir这三个处于启动状态。
- vi /etc/pure-ftpd/pure-ftpd.conf
最终效果如下:
- [...]
- ChrootEveryone yes
- [...]
- MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
- [...]
- CreateHomeDir yes
- [...]
ChrootEveryone是确保每个虚拟用户限制在其根目录,不能浏览其它目录。
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-mysql.conf文件内容如下,确保MYSQLPassword行ftpdpass为你之前所设置的mysql用户密码。
- MYSQLSocket /var/lib/mysql/mysql.sock
- #MYSQLServer localhost
- #MYSQLPort 3306
- MYSQLUser pureftpd
- MYSQLPassword ftpdpass
- MYSQLDatabase pureftpd
- #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
- MYSQLCrypt md5
- MYSQLGetPW SELECT Password FROM ftpd WHERE AND AND (ipaccess = "*" OR ipaccess LIKE "\R")
- MYSQLGetUID SELECT Uid FROM ftpd WHERE AND AND (ipaccess = "*" OR ipaccess LIKE "\R")
- MYSQLGetGID SELECT Gid FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
- MYSQLGetDir SELECT Dir FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
- MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
- MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
- MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
- MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
为pureftpd添加开机启动,并且启动它。
- chkconfig --levels 235 pure-ftpd on
- /etc/init.d/pure-ftpd start
添加ftp用户并测试
连接数据库
切换到数据库pureftpd
现在我们建立一个用户名user为 expamleuser,status 1(表示ftp帐号处于激活状态),ftp密码Password:secret(使用MD5存储),UID和GID 2001(使用之前建立的用户组和用户名ID),根目录Dir /home/www.example.com,以及上传和下载限制为100KB/秒,和50MB的空间大小。
- INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');
现在打开FTP客户端软件,如果你都没改的话,用户名是exampleuser,密码是secret来连接FTP,如果能连接,恭喜你!
使用phpmyadmin管理维护ftp用户
对于大多数人是用phpmyadmin管理mysql数据库的,因为我们也会用phpmyadmin来管理你的ftp用户。
ftpd数据表解释如下:
- User:虚拟pureftpd用户名。
- status:0或1,0表示用户禁用。
- Password:虚拟用户密码,确保把密码转成MD5再插入。
- UID:ftp用户的ID。
- GID:ftp用户组的ID。
- Dir:ftp用户对应的根目录。
- ULBandwidth:上传最大速度,单位为KB/s。
- DLBandwidth:下载最大速度,单位为KB/s。
- comment:备注。
- ipaccess:可以连接ftp服务器的IP。“*”表示任何IP可以连接。
- QuotaSize:最大存储空间,单位为MB。“0”表示不限制。
- QuotaFiles:最大建立的文件数量。“0”表示不限制。
现在,你已经可以正常使用pureftpd。虽然要操作的步骤多,但这样可以使你充分掌握配置pureftpd。