CentOS 5 PureFTPd yum安装与配置(MySQL虚拟用户)

之前介绍过vsftpd的安装,这篇文章就来介绍pureftpd在centos系统如何安装。pureftpd同样是Linux系统非常受欢迎的FTP服务器。

什么是pureftpd

Pure-FTPd 是一款免费(BSD)的,安全的,高质量和符合标准的FTP服务器。 侧重于运行效率和易用性。 它提供了简单的答案,他满足了大众化的需求,包括普通用户以及主机供应商们。

安装pureftpd

1、由于pureftpd不存在于CentOS中yum的官方库中,所以用yum安装pureftpd需要定义非官方的库。

  1. cd /etc/yum.repos.d/
  2. wget http://centos.karan.org/kbsingh-CentOS-Extras.repo

现在我们必须激活kbs-CentOS-Testing库。打开kbsingh-CentOS-Extras.repo文件,把enabled=0改成enabled=1

  1. vi kbsingh-CentOS-Extras.repo

最终修改如下:

  1. [...]
  2. [kbs-CentOS-Testing]
  3. name=CentOS.Karan.Org-EL$releasever - Testing
  4. gpgcheck=1
  5. gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
  6. enabled=1
  7. baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch/RPMS/

接着我们导入GPG key到软件库

  1. rpm --import http://centos.karan.org/RPM-GPG-KEY-karan.org.txt

2、开始安装pureftpd

  1. yum install pure-ftpd

3、添加ftp用户组(ftpgroup)和用户名(ftpuser),为所有虚拟ftp用户映射。可以自己定义ftp用户组和用户名,还有空闲的用户id2001。

  1. groupadd -g 2001 ftpgroup
  2. useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

创建pureftpd mysql数据库

现在我们来创建pureftpd数据库和pureftpd的mysql用户名。

  1. mysql -u root -p

替换ftpdpass成你想要的mysql用户pureftpd的密码。

  1. CREATE DATABASE pureftpd;
  2. GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
  3. GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
  4. FLUSH PRIVILEGES;

添加ftpd数据库表。

  1. USE pureftpd;
  1. CREATE TABLE ftpd (
  2. User varchar(16) NOT NULL default '',
  3. status enum('0','1') NOT NULL default '0',
  4. Password varchar(64) NOT NULL default '',
  5. Uid varchar(11) NOT NULL default '-1',
  6. Gid varchar(11) NOT NULL default '-1',
  7. Dir varchar(128) NOT NULL default '',
  8. ULBandwidth smallint(5) NOT NULL default '0',
  9. DLBandwidth smallint(5) NOT NULL default '0',
  10. comment tinytext NOT NULL,
  11. ipaccess varchar(15) NOT NULL default '*',
  12. QuotaSize smallint(5) NOT NULL default '0',
  13. QuotaFiles int(11) NOT NULL default 0,
  14. PRIMARY KEY (User),
  15. UNIQUE KEY User (User)
  16. ) TYPE=MyISAM;

断开数据库连接。

  1. quit;

至此,pureftpd相关的数据库和数据库表已经建立好了。

配置pureftpd

编辑/etc/pure-ftpd/pure-ftpd.conf文件,确保 ChrootEveryone, MySQLConfigFile, 和 CreateHomeDir这三个处于启动状态。

  1. vi /etc/pure-ftpd/pure-ftpd.conf

最终效果如下:

  1. [...]
  2. ChrootEveryone              yes
  3. [...]
  4. MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf
  5. [...]
  6. CreateHomeDir               yes
  7. [...]

ChrootEveryone是确保每个虚拟用户限制在其根目录,不能浏览其它目录。
CreateHomeDir是确保pureftpd自动建立相应目录。
然后编辑/etc/pure-ftpd/pureftpd-mysql.conf文件。

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

pureftpd-mysql.conf文件内容如下,确保MYSQLPassword行ftpdpass为你之前所设置的mysql用户密码。

  1. MYSQLSocket      /var/lib/mysql/mysql.sock
  2. #MYSQLServer     localhost
  3. #MYSQLPort       3306
  4. MYSQLUser       pureftpd
  5. MYSQLPassword   ftpdpass
  6. MYSQLDatabase   pureftpd
  7. #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
  8. MYSQLCrypt      md5
  9. MYSQLGetPW      SELECT Password FROM ftpd WHERE AND AND (ipaccess = "*" OR ipaccess LIKE "\R")
  10. MYSQLGetUID     SELECT Uid FROM ftpd WHERE AND AND (ipaccess = "*" OR ipaccess LIKE "\R")
  11. MYSQLGetGID     SELECT Gid FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
  12. MYSQLGetDir     SELECT Dir FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
  13. MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
  14. MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
  15. MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")
  16. MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHEREAND AND (ipaccess = "*" OR ipaccess LIKE "\R")

为pureftpd添加开机启动,并且启动它。

  1. chkconfig --levels 235 pure-ftpd on
  2. /etc/init.d/pure-ftpd start

添加ftp用户并测试

连接数据库

  1. mysql -u root -p

切换到数据库pureftpd

  1. USE pureftpd;

现在我们建立一个用户名user为 expamleuser,status 1(表示ftp帐号处于激活状态),ftp密码Password:secret(使用MD5存储),UID和GID 2001(使用之前建立的用户组和用户名ID),根目录Dir /home/www.example.com,以及上传和下载限制为100KB/秒,和50MB的空间大小。

  1. 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');
  1. quit;

现在打开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。

标签:YumCentosMySQL 发布于:2019-10-03 12:25:25