Home > Database > Mysql Tutorial > body text

MySQL下数据备份系统解决方案

WBOY
Release: 2016-06-07 16:04:13
Original
1013 people have browsed it

随着计算机网络的普及,计算机病毒有了快速传播的机会,并且对数据文件的破坏日益严重,用户需要经常对个人重要数据做异地备份。基于多用户和数据隐私的考虑,提出了个人数据备份系统解决方案。它利用网络存储设备具有的大容量、高可靠性、高安全性特点, 为

随着计算机网络的普及,计算机病毒有了快速传播的机会,并且对数据文件的破坏日益严重,用户需要经常对个人重要数据做异地备份。基于多用户和数据隐私的考虑,提出了个人数据备份系统解决方案。它利用网络存储设备具有的大容量、高可靠性、高安全性特点,为用户提供一定容量的空间来保存个人数据,同时利用软件的权限管理很好地实现个人数据的保密性。
目前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数据库,并且该账号只适用于FTP 服务器,不存在安全上的隐患。本文使用的开发平台是Linux + ProFTPD + MySQL组合。
总体设计
系统后台采用FTP服务器来为用户提供管理文件功能,可使用支持FTP 功能的各种软件来操作数据文件。解决方案实现用户账号自动申请受理、密码修改,网络管理人员可以使用浏览器来管理账号修改空间限量、修改口令及删除账号等功能。
系统的核心是如何使用开发语言来动态地配置ProFTPD,实现对数量众多用户的账号管理。
解决方案详细内容
有关ProFTPD的安装和配置文件内容的资料可以详见系统文档,本文重点介绍和数据库有关的部分。
1. 安装ProFTPD
(1)安装MySQL数据库,创建MySQL的安装目录的符号,连接到/usr/local/mysql。
(2)编译前的配置,将MySQL和空间限量模块增加到编译的选项中,代码如下:
# ./configure --with-includes = /usr/local/mysql/include --with-libraries=/usr/local/mysql/lib/mysql --with- modules=mod_sql:mod_sql_mysql:mod_quota
2. 增加用户
在MySQL中创建FTPusers数据库和users表用来保存FTP账号信息,代码如下:
<ccid_code>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',
   PRIMARY KEY (userid) 
   //主关键字
);</ccid_code>
Copy after login

在proftpd.conf中增加有关MySQL的配置,代码如下:
<ccid_code>SQLConnectInfo ftpusers@MySQL服务器名 username password 
//数据库连接
SQLDoGroupAuthoff
SQLAuthTypesPlaintext
SQLDoAuthon
SQLHomedirOnDemandon
SQLUserTableusers  
//指定使用的表名
SQLUsernameFielduserid  
//以下信息需要与users表中的字段对应
SQLPasswordFieldpassword
SQLHomedirFieldhomedir  
SQLLoginCountFieldcount
SQLShellFieldshell
SQLAuthoritativeoff
SQLLogStatson
SQLMinUsergid99
SQLMinUseruid14
SQLLogDirsfcdir
SQLDefaultgid99</ccid_code>
Copy after login

创建用户时需要在表中增加记录,即完成账号的增加。在用户第一次使用该账号登陆时,系统自动创建用户主目录并依据uid和gid的值来设置目录的用户和组。根据配置文件中的缺省空间限量的值生成限量文件。以下是ProFTPD.conf中设置缺省空间限量的配置:
<ccid_code>DefaultQuota204800000 //200MB大小
QuotaTypehard</ccid_code>
Copy after login

3. 删除用户
删除用户需要完成两方面工作:一方面需要对MySQL的users表做相应的删除;另一方面要删除用户主目录。需要注意的是,由于采用浏览器方式,开发系统的执行用户应具有对用户主目录的写权限。用户主目录的用户和组是由users表中的uid和gid来确定的。
4. 修改空间限量
在用户主目录创建后,系统自动生成.quota空间限量文件。该文件只能被root修改,文件的格式为“总容量 使用的容量”,账号管理系统只需使用新的限量文件覆盖即可。对“使用的容量”,FTP服务器每次登陆时会自动计算。如何使软件系统具有root权限,可以参看“sudoers”。
5.日志记录
从安全角度考虑,日志是很重要的一部分。传统的日志都是记录到文件中,而ProFTPD提供了将日志记录到数据库中的功能。这既方便了日志的查询,又极大地提高了日志查询速度。
首先需要在MySQL数据库中创建FTP_log数据表,代码如下:
<ccid_code>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, 
   //操作的时间
   PRIMARY KEY (id)
);</ccid_code>
Copy after login

修改ProFTPD.conf文件,将“日志记录到文件”关闭,设置如下:
<ccid_code>TransferLognone</ccid_code>
Copy after login

增加关于日志的配置,需要把用户的上载和下载及删除操作记录到日志中,记录的内容用户可以定置。例如:
<ccid_code>SQLLog RETR,STOR,DELE insert FTP_log "null,'%f', %b, '%u','%h','%r',now()"</ccid_code>
Copy after login

被记录的操作有以下几个:
◆RETR,文件的下载;
◆STOR,文件的上传;
◆DELE,文件的删除。
其中日志记录有以下内容:
◆%f,上载或下载的文件名称包含绝对路径;
◆%b,文件的大小,以字节为单位;
◆%u,用户使用的FTP账号;
◆%h,用户的IP地址;
◆now(),为MySQL提供系统时间函数。
结束语
在详细了解系统关键技术后,开发语言可以根据实际情况来选择,并可结合电子邮件服务器,实现账号和密码的统一,方便用户操作。有关MySQL和ProFTPD的详细配置等问题,由于篇幅有限就不一一阐述。
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template