热门标签 | 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

 


推荐阅读
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
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社区 版权所有