
随着电脑网络的普及,电脑病毒有了快速传播的机会,并且对数据文档的破坏日益严重,用户需要经常对个人重要数据做异地备份。基于多用户和数据隐私的考虑,提出了个人数据备份系统解决方案。他利用网络存储设备具备的大容量、高可靠性、高安全性特点,
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)
//主关键字
); |
在proftpd.conf中增加有关MySQL的配置,代码如下:
SQLConnectInfo ftpusers@MySQL服务器名 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的users表做相应的删除;另一方面要删除用户主目录。需要注意的是,由于采用浏览器方式,研发系统的执行用户应具备对用户主目录的写权限。用户主目录的用户和组是由users表中的uid和gid来确定的。
4. 修改空间限量
在用户主目录创建后,系统自动生成.quota空间限量文档。该文档只能被root修改,文档的格式为“总容量 使用的容量”,账号管理系统只需使用新的限量文档覆盖即可。对“使用的容量”,FTP服务器每次登陆时会自动计算。如何使软件系统具备root权限,能够参看“sudoers”。
5.日志记录
从安全角度考虑,日志是很重要的一部分。传统的日志都是记录到文档中,而ProFTPD提供了将日志记录到数据库中的功能。这既方便了日志的查询,又极大地提高了日志查询速度。
首先需要在MySQL数据库中创建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,
//操作的时间
PRIMARY KEY (id)
); |
修改ProFTPD.conf文档,将“日志记录到文档”关闭,配置如下:
增加关于日志的配置,需要把用户的上载和下载及删除操作记录到日志中,记录的内容用户能够定置。例如:
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提供系统时间函数。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!