IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 服务器 > FTP服务器 > FTP服务 Proftpd + mysql + quota

FTP服务 Proftpd + mysql + quota

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

索引

1 下载相关软件

1.1 下载proftpd
1.2 下载MySQL
1.3 下载proftpd-mod-quotatab

2 安装

2.1 解压proftpd-1.2.9rc1.tar.gz
2.2 解压proftpd-mod-quotatab-1.2.10.tar.gz
2.3 安装MySQL
2.4 编译安装proftpd和proftpd-mod-quotatab

3 配置

3.1 配置proftpd.conf文件
3.1.1 设置磁盘限额
3.1.2 指定磁盘限额模块使用的数据库信息
3.1.3 配置FTP用户为MySQL数据库认证方式

4 创建FTP系统用户和组
5 建立FTP用户认证相关表
6 建立磁盘限额数据表
7 数据表数据初始化
8 运行proftpd
9 配置proftpd执行脚本
10 FAQ
11 其它问题

1 下载相关软件

1.1 下载proftpd

在以下地址可下载到for Linux的proftpd-1.2.9rc1版:
http://www.proftpd.org/download.html
以上地址是一个FTP下载站点的列表,自己选一个吧。

1.2 下载MySQL

MySQL可以到http://www.mysql.com去下载,一般每一种Linux发行版都已经默认安装了MySQL,可以用以下命令查看:

rpm –qa|grep MySQL

如果没有的话,请在自己的Linux安装光盘中找到并予以安装,一般装完后就会自动启动了,可用如下命令查看:

ps –ef|grep mysql

如果看到了相应进程则表明MySQL已经运行,否则请自行启动:

/etc/rc.d/init.d/mysql start

1.3 下载proftpd-mod-quotatab

下面是proftpd-mod-quotatab的下载地址:

http://www.castaglia.org/proftpd/modules/proftpd-mod-quotatab-1.2.10.tar.gz

2 安装

2.1 解压proftpd-1.2.9rc1.tar.gz

假设下载的proftpd-1.2.9rc1.tar.gz文件在/root目录下,则先进入此目录,然后执行:

tar –xzvf proftpd-1.2.9rc1.tar.gz

2.2 解压proftpd-mod-quotatab-1.2.10.tar.gz

tar –xzvf proftpd-mod-quotatab-1.2.10.tar.gz

2.3 安装MySQL

假设MySQL的rpm包名字为MySQL-3.23.56-i386.rpm

rpm –ivh MySQL-3.23.56-i386.rpm

2.4 编译安装proftpd和proftpd-mod-quotatab

首先将进入解压后的proftpd-mod-quotatab目录,将此目录下的所有文件复制到解压后的proftpd目录下的modules目录中,接着到contrib目录中编辑mod_sql_mysql.c文件:

vi mod_sql_mysql.c

找到#include <mysql.h>这一行,将mysql.h改成你的系统中此文件所在的路径,如/usr/include/mysql/mysql.h

然后在解压后的proftpd目录中执行:

./configure --prefix=/usr/local/proftpd --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql --with-includes=/usr/include/mysql --with-libraries=/usr/lib/mysql

注意请根据自己的Linux系统找到MySQL的相应include和lib目录,以上例子中的相关路径是大多数Linux系统默认的,如果你的MySQL是通过源码编译安装的,则这两个目录一般在安装路径下。

如果configure没有错误,接下来就可以make;make install了。

make

make install

完成后,在/usr/local目录下会产生一个proftpd目录:

cd /usr/local/proftpd

ls会看到bin etc man sbin var五个目录,执行sbin/proftpd就会启动proftpd服务了,但现在还是使用的系统用户,请继续看下面……

3 配置

3.1 配置proftpd.conf文件

编辑/usr/local/proftpd/etc/proftpd.conf文件:

3.1.1 设置磁盘限额

#设置磁盘限额

QuotaDirectoryTally on

#设置磁盘容量显示时的单位

QuotaDisplayUnits &Kb&

#打开磁盘限额引擎

QuotaEngine on

#设置磁盘限额日志文件

QuotaLog &/usr/local/proftpd/var/quota&

#允许显示磁盘限额信息,ftp登录后可执行quote site quota命令查看当前磁盘使用情况

QuotaShowQuotas on

3.1.2 指定磁盘限额模块使用的数据库信息

在proftpd.conf文件中加入以下配置:

SQLNamedQuery get-quota-limit SELECT &name, quota_type, per_session, limit_type, bytes_in_avail,

bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits

WHERE name = '%{0}' AND quota_type = '%{1}'&

SQLNamedQuery get-quota-tally SELECT &name, quota_type, bytes_in_used, bytes_out_used,

bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies

WHERE name = '%{0}' AND quota_type = '%{1}'&

SQLNamedQuery update-quota-tally UPDATE &bytes_in_used = bytes_in_used + %{0},

bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2},

files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4},

files_xfer_used = files_xfer_used + %{5}

WHERE name = '%{6}' AND quota_type = '%{7}'& quotatallies
SQLNamedQuery insert-quota-tally INSERT &%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}& quotatallies

QuotaLimitTable sql:/get-quota-limit

QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

3.1.3 配置FTP用户为MySQL数据库认证方式

在proftpd.conf文件中加上以下配置:

SQLConnectInfo databaseName@hostName:port userName password

#databaseName是为proftpd建立的MySQL数据库的名字

#hostName是MySQL数据库所在的服务器的名字或ip地址

#port是MySQL服务所使用的端口

#userName是数据库的用户名

#password是数据库用户密码

SQLAuthTypes Backend Plaintext

#Backend表示用户认证方式为MySQL数据库的认证方式

#Plaintext表示明文认证方式,排在最前面的为最先使用的方式

SQLUserInfo ftpUser userid passwd uid gid homedir shell

#指定ftp用户数据表的名字和其中的字段名,表名可自行定义,字段名不要改动。
SQLGroupInfo ftpGroup groupname gid members

#指定ftp用户组数据表的名字和其中的字段名,这个数据表是可选的,字段名不要改动。

RequireValidShell off

#指定是否必须为FTP用户指定一个系统shell,off表示不用指定,on表示必须指定。为了系统安全应该指定为off。

SQLAuthenticate users groups usersetfast groupsetfast

#校验数据表

SQLHomedirOnDemand on

#如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录

4 创建FTP系统用户和组

创建一个FTP用户和组,以后所有的其它FTP用户实际上都是通过这个系统用户进行FTP的:

groupadd –g 2003 ftpGroup

useradd –u 2003 –g ftpGroup –d /home ftpUser

以上建立了一个名为ftpGroup的ftp组,组id为2003;建立了一个ftp用户,用户id为2003,并加入ftpGroup组,用户主目录为/home

接着修改/home的属主和访问权限:

chown –R ftpUser.ftpGroup /home

chmod 644 /home

644的具体含义请自查看相关文档。

再修改proftpd.conf文件,找到User 和 Group,将User指定为ftpUser,Group指定为ftpGroup,替换掉原默认值,否则如果系统中没有原默认值所指定的用户和组的话,proftpd是不能成功启动的。

5 建立FTP用户认证相关表

mysql –u root

use mysql

添加一个mysql用户:ftp

添加一个数据库:proftpd

具体指令请参考MYSQL手册。

建完用户和数据库后,以新建的用户登录MYSQL:

mysql –u ftp

use proftpd;

create table ftpUser (userid TEXT NOT NULL,passwd TEXT NOT NULL,uid INT NOT NULL,gid INT NOT NULL,homedir TEXT,shell TEXT);

userid是用户名,passwd是用户密码,uid是用户id,gid是用户所在组的id,homedir是用户主目录,shell是用户的系统shell。

create table ftpGroup (groupname TEXT NOT NULL,gid SMALLINT NOT NULL,members TEXT NOT NULL);

groupname是组名,gid是组id,members是组的成员,有多个成员时,要用逗号隔开。

以上建立了FTP用户和用户组的数据表。

6 建立磁盘限额数据表

CREATE TABLE quotalimits (
  name VARCHAR(30),
  quota_type ENUM(&qu

关键词标签:服务,用户,proftpd,NU

相关阅读 Linux下FTP的配置与应用 什么是ftp及ftp服务器 FTP出错解决和分析 proftp 安装设定文档 使用Win 2003搭建安全文件服务器 让Proftpd 的数据库模块支持MD5验证

文章评论
发表评论

热门文章 使用Win 2003搭建安全文件服务器 使用Win 2003搭建安全文件服务器 linux服务samba的详细配置 linux服务samba的详细配置 图解Windows xp—FTP服务器配置 图解Windows xp—FTP服务器配置 Linux文件传送命令SCP(Secure Copy) Linux文件传送命令SCP(Secure Copy) 在Windows 2003下搭建FTP服务器 在Windows 2003下搭建FTP服务器 IIS6.0打造FTP服务器完全图文详解 IIS6.0打造FTP服务器完全图文详解

相关下载

人气排行 vsftp配置大全---超完整版 IIS6.0打造FTP服务器完全图文详解 使用Win 2003搭建安全文件服务器 图解Windows xp—FTP服务器配置 linux服务samba的详细配置 在Windows 2003下搭建FTP服务器 FTP登陆错误详解 Windows内置FTP服务器高级配置 Windows XP系统下架设FTP服务器的步骤 不用工具也可以修改Serv-u默认43958端口 使用CesarFTP架设FTP服务器 FTP空间不足 Windows 系统性能监控来报警