热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ProFTPD与MySQL和mod_quota的整合配置过程

前言:本文的描述平台为RedHatLinux/x868.0(Psyche),适用于RedHatLinux/x869.0(Shrike)。一、软件获取(本文以proftpd-1.2.7、mod_quota-1.28和MySQL-3.23.56为例)1.ProFTPDproftpd-1.2.7.tar.gzproftpd-

前言:

本文的描述平台为Red Hat Linux/x86 8.0 (Psyche),适用于Red Hat Linux/x86 9.0 (Shrike)。

一、软件获取(本文以proftpd-1.2.7、mod_quota-1.28和MySQL-3.23.56为例)
1. ProFTPD
proftpd-1.2.7.tar.gz
proftpd-1.2.7-1.i386.rpm
proftpd-standalone-1.2.7-1.i386.rpm 下载: http://www.mysql.com/

二、安装ProFTPD
1. 卸载wu-ftpd
rpm -e anonftp
rpm -e wu-ftpd 2. 安装ProFTPD
rpm -ivh proftpd-1.2.7-1.i386.rpm
rpm -ivh proftpd-standalone-1.2.7-1.i386.rpm
3. 编译ProFTPD
tar -zxvf proftpd-1.2.7.tar.gz
cp mod_quota.c_for_1.2.7 ./proftpd-1.2.7/contrib/mod_quota.c
vi ./proftpd-1.2.7/contrib/mod_quota.c
# 将其中的“/* #define QUOTA_MYSQL *' target="_blank">http://www.proftpd.org
proftpd.conf 配置详情:http://www.proftpd.org/docs/configuration.html
2. mod_quota v1.28
mod_quota.c_for_1.2.7
下载: ftp://pooh.urbanrage.com/pub/c/
3. MySQL
MySQL-3.23.56-1.i386.rpm
MySQL-client-3.23.56-1.i386.rpm
MySQL-devel-3.23.56-1.i386.rpm
MySQL-shared-3.23.56-1.i386.rpm
下载: http://www.mysql.com/

二、安装ProFTPD
1. 卸载wu-ftpd
rpm -e anonftp
rpm -e wu-ftpd 2. 安装ProFTPD
rpm -ivh proftpd-1.2.7-1.i386.rpm
rpm -ivh proftpd-standalone-1.2.7-1.i386.rpm
3. 编译ProFTPD
tar -zxvf proftpd-1.2.7.tar.gz
cp mod_quota.c_for_1.2.7 ./proftpd-1.2.7/contrib/mod_quota.c
vi ./proftpd-1.2.7/contrib/mod_quota.c
# 将其中的“/* #define QUOTA_MYSQL */ ”改为“#define QUOTA_MYSQL”
cd ../proftpd-1.2.7
./configure --prefix=/usr --syscOnfdir=/etc --localstatedir=/var/run --mandir=/usr/man --with-libraries=/usr/lib/mysql --with-includes=/usr/include/mysql --with-modules=mod_sql:mod_sql_mysql:mod_quota
make
make install

三、安装MySQL和建立数据库
1. 安装MySQL
rpm -ivh MySQL-3.23.56-1.i386.rpm
rpm -ivh MySQL-client-3.23.56-1.i386.rpm
rpm -ivh MySQL-devel-3.23.56-1.i386.rpm
rpm -ivh MySQL-shared-3.23.56-1.i386.rpm
2. 建立数据库
#建立数据库proftpd
CREATE DATABASE proftpd;
#选定使用的数据(proftpd)
USE proftpd
#建立组表
DROP TABLE IF EXISTS `groups`;
CREATE TABLE `groups` (
`groupname` varchar(255) binary NOT NULL default '',
`gid` int(11) NOT NULL default '0',
`members` text NOT NULL,
PRIMARY KEY (`groupname`)
)TYPE=MyISAM;
#建立用户表
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`userid` varchar(255) binary NOT NULL default '',
`passwd` varchar(255) binary NOT NULL default '',
`uid` int(11) default NULL,
`gid` int(11) default NULL,
`homedir` varchar(255) default NULL,
`shell` varchar(255) default NULL,
`count` int(11) default NULL,
`used` double(10,1) default '0.0',
`quota` double(10,1) default '104857600.0',
PRIMARY KEY (`userid`)
) TYPE=MyISAM;
#建立数据库用户及初始化用户密码(数据库用户名:proftpd , 密码: 12345678)
grant all privileges on proftpd.* to proftpd@localhost identified by '12345678';
flush privileges;
四、设置proftpd ( 配置文件 /etc/proftpd.conf )
#将“User nobody”改为“User ftp”
User ftp #将“Group nogroup”改为“Group ftp”
Group ftp
#关闭proftpd的反向解析查询, 从而加速ftp连线登录
UseReverseDNS off
#将用户限制自己的目录下
DefaultRoot ~
#不使用shell
RequireValidShell no
#打开磁盘配额限制
Quotas on
QuotaCalc on
#硬性限制,将上传超出配额限制的文件删除
QuotaType hard
#默认的配额(100MB)
DefaultQuota 102400
#将默认的单位由“byte”改为“KB”
QuotaBlockSize 1024
QuotaBlockName "K bytes"
#Disable ident protocol (RFC1413)
IdentLookups off
#MySQL的连接参数:数据库@主机名 用户名 密码
SQLConnectInfo proftpd@localhost proftpd 12345678
#指定认证方式
SQLAuthenticate users
#用户密码类型(本文的设置把持Backend、Crypt加密密码和不加密码)
SQLAuthTypes Backend Crypt Plaintext
#用户表信息:表名“user”, 字段名“passwd uid gid 用户目录 shell”
SQLUserInfo users userid passwd uid gid homedir shell
#组表信息: 表名 组名字段 组值字段 成员字段
SQLGroupInfo groups groupname gid members
#用户登录后,将用户的登录次数+1
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1 WHERE userid='%u'" users
#用户登录后,显示已经登录过的次数
SQLNamedQuery count SELECT "count FROM users WHERE userid='%u'"
SQLShowInfo PASS "230" "You've logged on %{count} times, %u"
#如果用户目录不存在,自动创建用户目录
SQLHomedirOnDemand on
#Quota信息的表名
SQLQuotaTable users
#MySQL的连接参数: 主机名 用户名 密码 数据库
SQLQuotaInfo localhost proftpd 12345678 proftpd
#用户的字段名
SQLQuotaName userid
#用户已经使用空间的字段名
SQLQuotaUsed used
#用户磁盘配额的字段名
SQLQuotaQuota quota

五、测试
1. 启动Proftd
/etc/rc.d/init.d/proftpd start
2. 建立测试用户
测试用户: test
密码(加密): 87654321
uid: 14
gid: 50
目录:/home/ftp/test
shell: /sbin/nologin
已登录数: 0
已使用空间: 0
磁盘限额: 100MB
方法一: 命令行方式创建
shell> mysql -u proftpd -p
mysql> USE proftpd
mysql> INSERT INTO users VALUES ("test", PASSWORD( "87654321" ) , 14, 50, "/home/ftp/test", "/sbin/nologin", 0, 0, 10240000);
方法二: 用phpMyAdmin方式创建(在选定proftpd数据库的情况执行下列SQL语句)
INSERT INTO users VALUES ("test", PASSWORD( "87654321" ) , 14, 50, "/home/ftp/test", "/sbin/nologin", 0, 0, 10240000);
ceiba
2003-05-18
补充: 常用设置参数
ServerIdent on ftp.abc.com # ftp登录时,显示指的域名ftp.abc.com, 而不显示默认的主机名(域名)
UseReverseDNS off # 关闭proftpd的反向解析查询, 从而加速ftp连线登录
DefaultRoot ~ # 把ftp用户强制限定在自己目录下 ? 加强系统安全
TimesGMT off # 关闭GMT与本地时区绑定 ? 使用目录和文件的时间显示与系统一致
调试proftpd:
/usr/sbin/proftpd -c /etc/proftpd.conf -d 5 -n
参考:
Proftpd+mysql+quota的实现方法
http://www.eduhr.com/edu/2002-12-30/149.htm
以下是/etc/proftpd.conf的一个配置实例
--------------------------------------------------------------------------------
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon. ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 30
# Set the user and group under which the server will run.
User ftp
Group ftp
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
UseReverseDNS off
TimesGMT off
DefaultRoot ~
RequireValidShell no
Quotas on
QuotaCalc on
QuotaType hard
DefaultQuota 102400
QuotaBlockSize 1024
QuotaBlockName "K bytes"
IdentLookups off
SQLConnectInfo proftpd@localhost proftpd 12345678
SQLAuthenticate users
SQLAuthTypes Backend Crypt Plaintext
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupname gid members
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1 WHERE userid='%u'" users
SQLNamedQuery count SELECT "count FROM users WHERE userid='%u'"
SQLShowInfo PASS "230" "You've logged on %{count} times, %u"
SQLHomedirOnDemand on
SQLQuotaTable users
SQLQuotaInfo localhost proftpd 12345678 proftpd
SQLQuotaName userid
SQLQuotaUsed used
SQLQuotaQuota quota
# Normally, we want files to be overwriteable.

AllowOverwrite on

# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire section.

User ftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Limit the maximum number of anonymous logins
MaxClients 10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot

DenyAll

 


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
author-avatar
htqdw
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有