博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pureftp在centos下与MySQL搭配使用
阅读量:6972 次
发布时间:2019-06-27

本文共 5193 字,大约阅读时间需要 17 分钟。

概述

pure-ftpd是linux下的一个ftp服务端,据说安全性较高。我在centos6下用yum安装pure-ftpd,并配置了通过MySQL进行用户的增删改查,以及对应到apache的web目录权限,便于直接使用。

关键一点是,配置出现问题时要及时查看log:

vim /var/log/messages

安装

yum install pure-ftpd

请确保安装了epel的repo

同时,这里假定你安装了httpd、MySQL、phpMyAdmin

MySQL相关的配置

要使用MySQL管理pureftpd的用户,需要为pureftpd服务创建一个数据库帐号,以及一个数据库。

创建pureftpd数据库帐号

通过phpMyAdmin的web界面创建用户,或者mysql的命令行创建:用户名:pureftpd密码:your_pureftpd_password并授予权限同时创建一个数据库,可以和用户名一致

创建数据表

为刚刚创建的数据库建立一张表,存储pureftp的ftp帐号信息,e.g.,取名为ftpd的一张表:

-- MySQL dump 10.14  Distrib 5.5.44-MariaDB, for Linux (x86_64)---- Host: localhost    Database: pureftpd-- -------------------------------------------------------- Server version   5.5.44-MariaDB-log/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;---- Table structure for table `ftpd`--DROP TABLE IF EXISTS `ftpd`;/*!40101 SET @saved_cs_client     = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;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=InnoDB DEFAULT CHARSET=utf8;/*!40101 SET character_set_client = @saved_cs_client */;

pureftpd的MySQL配置文件

cd /etc/pure-ftpdcp pureftpd-mysql.conf pureftpd-mysql.conf.origvim pureftpd-mysql.conf

pureftpd-mysql.conf内容大致如下,需要注意MYSQL的帐号(MYSQLUser)、密码(MySQLPassword)、数据库名(MYSQLDatabase),以及数据表(关键!这里是ftpd)的名字,和你刚才配置的一致:

MYSQLSocket      /var/lib/mysql/mysql.sock#MYSQLServer     localhost#MYSQLPort       3306MYSQLUser       pureftpd #!!这里MYSQLPassword   ftpdpass #!!这里MYSQLDatabase   pureftpd ##!!这里#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartextMYSQLCrypt      md5 ##注意下面各行中FROM后面的名字,确保ftpd是你的数据表的名字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")

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[...]MinUID                      14

这里面MinUID表示ftp登录账户对应的UID。ftp账户其实是虚拟账户,并不是Linux下的账户直接拿来用(当然你用sftp登录另说),每个ftp用户对应一个linux下的账户,而这个linux账户的唯一标识就是UID了。因为配置这个ftp是希望直接用于apache的web目录,因此uid就用apache的48就可以了。另外创建ftp账户时还有一个GID的问题,apache组的GID也是48。为保证正常登录,MinUID设置为一个较小值,这里使用14。查看其他组的GID:

vim /etc/group

添加ftp用户

用phpMyAdmin的web页面,或者mysql的命令行,创建用户。

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

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('testuser', '1', MD5('secret'), '2001', '2001', '/var/www/html/test.example.com', '100', '100', '', '*', '50', '0');

UID:ftp用户的ID。

GID:ftp用户组的ID。
Dir:ftp用户对应的根目录。
ULBandwidth:上传最大速度,单位为KB/s。
DLBandwidth:下载最大速度,单位为KB/s。
comment:备注。
ipaccess:可以连接ftp服务器的IP。“*”表示任何IP可以连接。
QuotaSize:最大存储空间,单位为MB。“0”表示不限制。
QuotaFiles:最大建立的文件数量。“0”表示不限制。

设定服务项

开机自启动服务项:

chkconfig --levels 235 pure-ftpd on

启动服务:

/etc/init.d/pure-ftpd start或者:service pure-ftpd start

遇到登录故障,请查看/var/log/messages,可能需要多重启几次服务:

service pure-ftpd restart

其他

本文参考https://www.centos.bz/2011/03/centos-pureftpd-install/

里面包含了创建新的用户组的问题。。

P.S. 如果你复制本文内容后执行还是无法登录,那么建议删掉一些空格换行符。

转载地址:http://xlosl.baihongyu.com/

你可能感兴趣的文章
2019.2.5 区块链论文翻译
查看>>
会员等级
查看>>
反编译apk
查看>>
Qt编写自定义控件24-图片轮播控件
查看>>
学习python第一天内容回顾
查看>>
双向广搜总结
查看>>
Django 连接mysql驱动设置
查看>>
Newtonsoft 反序列化字符串
查看>>
POJ 2138 最长路
查看>>
函数进阶
查看>>
原码,补码表示
查看>>
IIS编译器错误信息: CS0016:未能写入输出文件
查看>>
Python 的命令行参数处理 optparse->argparse
查看>>
label和input对齐的方法(转)
查看>>
【算法学习笔记】49.暴力穷举 BFS 剪枝 SJTU OJ 1357 相邻方案
查看>>
T51658 【wsy】签到题
查看>>
mysql 控制台上传数据库
查看>>
洛谷P1196 银河英雄传说
查看>>
aop为系统添加操作日志,注入或配置声明的方式来实现
查看>>
好用的日期控件jeDate
查看>>