数据备份系统解决方案
2007-11-11 14:03:56 来源:WEB开发网核心提示:随着计算机网络的普及,计算机病毒有了快速传播的机会,数据备份系统解决方案,并且对数据文件的破坏日益严重,用户需要经常对个人重要数据做异地备份,方便用户操作,有关MySQL(和PHP搭配之最佳组合)和ProFTPD的详细配置等问题,基于多用户和数据隐私的考虑,提出了个人数据备份系统解决方案
随着计算机网络的普及,计算机病毒有了快速传播的机会,并且对数据文件的破坏日益严重,用户需要经常对个人重要数据做异地备份。基于多用户和数据隐私的考虑,提出了个人数据备份系统解决方案。它利用网络存储设备具有的大容量、高可靠性、高安全性特点,为用户提供一定容量的空间来保存个人数据,同时利用软件的权限管理很好地实现个人数据的保密性。
目前Linux下FTP服务器软件主要有Wu-FTP和ProFTPD两种。Wu-FTP是Red Hat Linux预装软件,但安全漏洞很多。ProFTPD针对Wu-FTP的弱项而开发,除改进了安全性外,还具备许多特点,如设置简单、能以Stand-alone模式运行等。ProFTPD已经成为继Wu-FTP之后最为流行的FTP服务器软件之一。
ProFTPD在1.2版本之前使用Linux用户账号来管理用户,即使用口令文件。该方式存在很多不足,与数据库操作相比,用户账号的增加、口令的修改及账号的删除显得十分复杂,并且文件无法支持并发读写;在Linux中用户账号具有Telnet的权限,安全上存在隐患;口令文件只有root账号可以修改,如果使用浏览器方式修改此文件,在技术上有一定难度。
在ProFTPD 1.2.4版中增加了数据库管理用户的功能,目前只支持MySQL(和PHP搭配之最佳组合)数据库,并且该账号只适用于FTP 服务器,不存在安全上的隐患。本文使用的开发平台是Linux + ProFTPD + MySQL(和PHP搭配之最佳组合)组合。
总体设计
系统后台采用FTP服务器来为用户提供管理文件功能,可使用支持FTP 功能的各种软件来操作数据文件。解决方案实现用户账号自动申请受理、密码修改,网络管理人员可以使用浏览器来管理账号修改空间限量、修改口令及删除账号等功能。
系统的核心是如何使用开发语言来动态地配置ProFTPD,实现对数量众多用户的账号管理。
解决方案详细内容
有关ProFTPD的安装和配置文件内容的资料可以详见系统文档,本文重点介绍和数据库有关的部分。
1. 安装ProFTPD
(1)安装MySQL(和PHP搭配之最佳组合)数据库,创建MySQL(和PHP搭配之最佳组合)的安装目录的符号,连接到/usr/local/MySQL(和PHP搭配之最佳组合)。
(2)编译前的配置,将MySQL(和PHP搭配之最佳组合)和空间限量模块增加到编译的选项中,代码如下:
# ./configure --with-includes = /usr/local/MySQL(和PHP搭配之最佳组合)/include --with-libraries=/usr/local/MySQL(和PHP搭配之最佳组合)/lib/MySQL(和PHP搭配之最佳组合) --with- modules=mod_sql:mod_sql_MySQL(和PHP搭配之最佳组合):mod_quota
2. 增加用户
在MySQL(和PHP搭配之最佳组合)中创建FTPusers数据库和users表用来保存FTP账号信息,代码如下:
CREATE TABLE users (
userid varchar(50) NOT NULL,
//用户的FTP 账号名称
password varchar(50),
// 用户的FTP账号密码
uid int(5) DEFAULT '0' NOT NULL,
//用户主目录的 uid
gid int(5) DEFAULT '65533' NOT NULL,
//用户主目录的 gid
homedir varchar(255),
//用户主目录
count int(11) DEFAULT '0',
//登陆次数
ftime timestamp(14),
//最后一次登陆时间
shell varchar(255) DEFAULT ' /bin/bash',
Prima(最完善的虚拟主机管理系统)RY KEY (userid)
//主关键字
);
在proftpd.conf中增加有关MySQL(和PHP搭配之最佳组合)的配置,代码如下:
SQLConnectInfo ftpusers@MySQL(和PHP搭配之最佳组合)服务器名 username password
//数据库连接
SQLDoGroupAuthoff
SQLAuthTypesPlaintext
SQLDoAuthon
SQLHomedirOnDemandon
SQLUserTableusers
//指定使用的表名
SQLUsernameFielduserid
//以下信息需要与users表中的字段对应
SQLPasswordFieldpassword
SQLHomedirFieldhomedir
SQLLoginCountFieldcount
SQLShellFieldshell
SQLAuthoritativeoff
SQLLogStatson
SQLMinUsergid99
SQLMinUseruid14
SQLLogDirsfcdir
SQLDefaultgid99
创建用户时需要在表中增加记录,即完成账号的增加。在用户第一次使用该账号登陆时,系统自动创建用户主目录并依据uid和gid的值来设置目录的用户和组。根据配置文件中的缺省空间限量的值生成限量文件。以下是ProFTPD.conf中设置缺省空间限量的配置:
DefaultQuota204800000 //200MB大小
QuotaTypehard
3. 删除用户
删除用户需要完成两方面工作:一方面需要对MySQL(和PHP搭配之最佳组合)的users表做相应的删除;另一方面要删除用户主目录。需要注意的是,由于采用浏览器方式,开发系统的执行用户应具有对用户主目录的写权限。用户主目录的用户和组是由users表中的uid和gid来确定的。
4. 修改空间限量
在用户主目录创建后,系统自动生成.quota空间限量文件。该文件只能被root修改,文件的格式为“总容量 使用的容量”,账号管理系统只需使用新的限量文件覆盖即可。对“使用的容量”,FTP服务器每次登陆时会自动计算。如何使软件系统具有root权限,可以参看“sudoers”。
5.日志记录
从安全角度考虑,日志是很重要的一部分。传统的日志都是记录到文件中,而ProFTPD提供了将日志记录到数据库中的功能。这既方便了日志的查询,又极大地提高了日志查询速度。
首先需要在MySQL(和PHP搭配之最佳组合)数据库中创建FTP_log数据表,代码如下:
CREATE TABLE FTP_log (
id int(12) unsigned DEFAULT '0' NOT NULL auto_increment,
//主关键字
filename varchar(255),
//文件名
filesize int(10) unsigned,
//文件大小
email varchar(20) NOT NULL,
//用户的账号
ip varchar(15) NOT NULL,
//用户的ip地址
action varchar(255),
//用户操作的内容
ftime datetime,
//操作的时间
Prima(最完善的虚拟主机管理系统)RY KEY (id)
);
修改ProFTPD.conf文件,将“日志记录到文件”关闭,设置如下:
TransferLognone
增加关于日志的配置,需要把用户的上载和下载及删除操作记录到日志中,记录的内容用户可以定置。例如:
SQLLog RETR,STOR,DELE insert FTP_log "null,'%f', %b, '%u','%h','%r',now()"
被记录的操作有以下几个:
◆RETR,文件的下载;
◆STOR,文件的上传;
◆DELE,文件的删除。
其中日志记录有以下内容:
◆%f,上载或下载的文件名称包含绝对路径;
◆%b,文件的大小,以字节为单位;
◆%u,用户使用的FTP账号;
◆%h,用户的IP地址;
◆now(),为MySQL(和PHP搭配之最佳组合)提供系统时间函数。
结束语
在详细了解系统关键技术后,开发语言可以根据实际情况来选择,并可结合电子邮件服务器,实现账号和密码的统一,方便用户操作。有关MySQL(和PHP搭配之最佳组合)和ProFTPD的详细配置等问题,由于篇幅有限就不一一阐述。
目前Linux下FTP服务器软件主要有Wu-FTP和ProFTPD两种。Wu-FTP是Red Hat Linux预装软件,但安全漏洞很多。ProFTPD针对Wu-FTP的弱项而开发,除改进了安全性外,还具备许多特点,如设置简单、能以Stand-alone模式运行等。ProFTPD已经成为继Wu-FTP之后最为流行的FTP服务器软件之一。
ProFTPD在1.2版本之前使用Linux用户账号来管理用户,即使用口令文件。该方式存在很多不足,与数据库操作相比,用户账号的增加、口令的修改及账号的删除显得十分复杂,并且文件无法支持并发读写;在Linux中用户账号具有Telnet的权限,安全上存在隐患;口令文件只有root账号可以修改,如果使用浏览器方式修改此文件,在技术上有一定难度。
在ProFTPD 1.2.4版中增加了数据库管理用户的功能,目前只支持MySQL(和PHP搭配之最佳组合)数据库,并且该账号只适用于FTP 服务器,不存在安全上的隐患。本文使用的开发平台是Linux + ProFTPD + MySQL(和PHP搭配之最佳组合)组合。
总体设计
系统后台采用FTP服务器来为用户提供管理文件功能,可使用支持FTP 功能的各种软件来操作数据文件。解决方案实现用户账号自动申请受理、密码修改,网络管理人员可以使用浏览器来管理账号修改空间限量、修改口令及删除账号等功能。
系统的核心是如何使用开发语言来动态地配置ProFTPD,实现对数量众多用户的账号管理。
解决方案详细内容
有关ProFTPD的安装和配置文件内容的资料可以详见系统文档,本文重点介绍和数据库有关的部分。
1. 安装ProFTPD
(1)安装MySQL(和PHP搭配之最佳组合)数据库,创建MySQL(和PHP搭配之最佳组合)的安装目录的符号,连接到/usr/local/MySQL(和PHP搭配之最佳组合)。
(2)编译前的配置,将MySQL(和PHP搭配之最佳组合)和空间限量模块增加到编译的选项中,代码如下:
# ./configure --with-includes = /usr/local/MySQL(和PHP搭配之最佳组合)/include --with-libraries=/usr/local/MySQL(和PHP搭配之最佳组合)/lib/MySQL(和PHP搭配之最佳组合) --with- modules=mod_sql:mod_sql_MySQL(和PHP搭配之最佳组合):mod_quota
2. 增加用户
在MySQL(和PHP搭配之最佳组合)中创建FTPusers数据库和users表用来保存FTP账号信息,代码如下:
CREATE TABLE users (
userid varchar(50) NOT NULL,
//用户的FTP 账号名称
password varchar(50),
// 用户的FTP账号密码
uid int(5) DEFAULT '0' NOT NULL,
//用户主目录的 uid
gid int(5) DEFAULT '65533' NOT NULL,
//用户主目录的 gid
homedir varchar(255),
//用户主目录
count int(11) DEFAULT '0',
//登陆次数
ftime timestamp(14),
//最后一次登陆时间
shell varchar(255) DEFAULT ' /bin/bash',
Prima(最完善的虚拟主机管理系统)RY KEY (userid)
//主关键字
);
在proftpd.conf中增加有关MySQL(和PHP搭配之最佳组合)的配置,代码如下:
SQLConnectInfo ftpusers@MySQL(和PHP搭配之最佳组合)服务器名 username password
//数据库连接
SQLDoGroupAuthoff
SQLAuthTypesPlaintext
SQLDoAuthon
SQLHomedirOnDemandon
SQLUserTableusers
//指定使用的表名
SQLUsernameFielduserid
//以下信息需要与users表中的字段对应
SQLPasswordFieldpassword
SQLHomedirFieldhomedir
SQLLoginCountFieldcount
SQLShellFieldshell
SQLAuthoritativeoff
SQLLogStatson
SQLMinUsergid99
SQLMinUseruid14
SQLLogDirsfcdir
SQLDefaultgid99
创建用户时需要在表中增加记录,即完成账号的增加。在用户第一次使用该账号登陆时,系统自动创建用户主目录并依据uid和gid的值来设置目录的用户和组。根据配置文件中的缺省空间限量的值生成限量文件。以下是ProFTPD.conf中设置缺省空间限量的配置:
DefaultQuota204800000 //200MB大小
QuotaTypehard
3. 删除用户
删除用户需要完成两方面工作:一方面需要对MySQL(和PHP搭配之最佳组合)的users表做相应的删除;另一方面要删除用户主目录。需要注意的是,由于采用浏览器方式,开发系统的执行用户应具有对用户主目录的写权限。用户主目录的用户和组是由users表中的uid和gid来确定的。
4. 修改空间限量
在用户主目录创建后,系统自动生成.quota空间限量文件。该文件只能被root修改,文件的格式为“总容量 使用的容量”,账号管理系统只需使用新的限量文件覆盖即可。对“使用的容量”,FTP服务器每次登陆时会自动计算。如何使软件系统具有root权限,可以参看“sudoers”。
5.日志记录
从安全角度考虑,日志是很重要的一部分。传统的日志都是记录到文件中,而ProFTPD提供了将日志记录到数据库中的功能。这既方便了日志的查询,又极大地提高了日志查询速度。
首先需要在MySQL(和PHP搭配之最佳组合)数据库中创建FTP_log数据表,代码如下:
CREATE TABLE FTP_log (
id int(12) unsigned DEFAULT '0' NOT NULL auto_increment,
//主关键字
filename varchar(255),
//文件名
filesize int(10) unsigned,
//文件大小
email varchar(20) NOT NULL,
//用户的账号
ip varchar(15) NOT NULL,
//用户的ip地址
action varchar(255),
//用户操作的内容
ftime datetime,
//操作的时间
Prima(最完善的虚拟主机管理系统)RY KEY (id)
);
修改ProFTPD.conf文件,将“日志记录到文件”关闭,设置如下:
TransferLognone
增加关于日志的配置,需要把用户的上载和下载及删除操作记录到日志中,记录的内容用户可以定置。例如:
SQLLog RETR,STOR,DELE insert FTP_log "null,'%f', %b, '%u','%h','%r',now()"
被记录的操作有以下几个:
◆RETR,文件的下载;
◆STOR,文件的上传;
◆DELE,文件的删除。
其中日志记录有以下内容:
◆%f,上载或下载的文件名称包含绝对路径;
◆%b,文件的大小,以字节为单位;
◆%u,用户使用的FTP账号;
◆%h,用户的IP地址;
◆now(),为MySQL(和PHP搭配之最佳组合)提供系统时间函数。
结束语
在详细了解系统关键技术后,开发语言可以根据实际情况来选择,并可结合电子邮件服务器,实现账号和密码的统一,方便用户操作。有关MySQL(和PHP搭配之最佳组合)和ProFTPD的详细配置等问题,由于篇幅有限就不一一阐述。
更多精彩
赞助商链接